📖 Scenario: You are working on a simple calculator app that needs to check if a given number is a power of two. This is useful for optimizing certain calculations and memory allocations.
🎯 Goal: Build a program that checks if a number is a power of two using a simple method and prints the result.
📋 What You'll Learn
Create an integer variable named number with the value 16
Create a boolean variable named isPowerOfTwo to store the check result
Use the bitwise operation (number & (number - 1)) == 0 to check if number is a power of two
Print "True" if number is a power of two, otherwise print "False"
💡 Why This Matters
🌍 Real World
Checking if a number is a power of two is useful in computer memory allocation, graphics programming, and optimizing algorithms.
💼 Career
Understanding bitwise operations and condition checks is important for software developers working on performance-critical applications.
Progress0 / 4 steps
1
Create the number variable
Create an integer variable called number and set it to 16.
DSA C#
Hint
Use int number = 16; to create the variable.
2
Create the boolean variable for the check
Create a boolean variable called isPowerOfTwo but do not assign it yet.
DSA C#
Hint
Declare bool isPowerOfTwo; without assigning a value yet.
3
Check if number is power of two
Assign isPowerOfTwo the result of the expression (number & (number - 1)) == 0.
DSA C#
Hint
Use the bitwise AND operator & to check the power of two condition.
4
Print the result
Print the value of isPowerOfTwo using Console.WriteLine(isPowerOfTwo);.
DSA C#
Hint
Use Console.WriteLine(isPowerOfTwo); to print the result.
Practice
(1/5)
1. Which of the following statements correctly describes a number that is a power of two?
easy
A. It is divisible by 3.
B. It is always an odd number.
C. It has all bits set to 1 in its binary form.
D. It has exactly one bit set to 1 in its binary form.
Solution
Step 1: Understand binary representation of powers of two
A power of two in binary has exactly one '1' bit and the rest are '0's, e.g., 4 is 100.
Step 2: Check other options for correctness
Odd numbers and divisibility by 3 do not define powers of two. Having all bits set to 1 means numbers like 7 (111), not powers of two.
Final Answer:
It has exactly one bit set to 1 in its binary form. -> Option D
Quick Check:
Power of two = one '1' bit [OK]
Hint: Power of two has only one '1' bit in binary [OK]
Common Mistakes:
Thinking powers of two are always odd
Confusing all bits set to 1 with power of two
Assuming divisibility by 3 means power of two
2. Which of the following C# expressions correctly checks if an integer n is a power of two?
easy
A. return (n & (n + 1)) == 0;
B. return (n | (n - 1)) == 0;
C. return (n & (n - 1)) == 0 && n > 0;
D. return (n ^ (n - 1)) == 0;
Solution
Step 1: Understand bitwise check for power of two
For a power of two, n & (n - 1) clears the only set bit, resulting in 0. Also, n must be positive.
Step 2: Analyze other expressions
Other options use incorrect bitwise operations that do not correctly identify powers of two.
Final Answer:
return (n & (n - 1)) == 0 && n > 0; -> Option C
Quick Check:
Bitwise AND with n-1 equals zero means power of two [OK]
Hint: Use (n & (n - 1)) == 0 and n > 0 to check power of two [OK]
Common Mistakes:
Using OR or XOR instead of AND
Not checking if n is positive
Using n + 1 instead of n - 1
3. What is the output of the following C# code?
int n = 16;
bool result = (n & (n - 1)) == 0 && n > 0;
Console.WriteLine(result);
medium
A. True
B. False
C. Compile-time error
D. Runtime exception
Solution
Step 1: Calculate bitwise AND of n and n-1
For n=16 (binary 10000), n-1=15 (binary 01111). Bitwise AND is 0.
Step 2: Check if result is zero and n is positive
Since (n & (n - 1)) == 0 and n > 0, the expression is true.
Final Answer:
True -> Option A
Quick Check:
16 is power of two, so output is True [OK]
Hint: If n & (n-1) == 0 and n>0, output is True [OK]
Common Mistakes:
Miscomputing bitwise AND
Ignoring n > 0 condition
Confusing True and False outputs
4. The following code is intended to check if n is a power of two. What is the error?
A. The expression should be (n | (n - 1)) == 0 instead.
B. It does not check if n is positive, so zero or negative numbers return true incorrectly.
C. The function should return an integer, not a boolean.
D. The bitwise AND operator is used incorrectly; it should be OR.
Solution
Step 1: Analyze the bitwise condition
The expression (n & (n - 1)) == 0 is true for powers of two but also for zero.
Step 2: Identify missing condition
Zero and negative numbers are not powers of two, so the function must check n > 0.
Final Answer:
It does not check if n is positive, so zero or negative numbers return true incorrectly. -> Option B
Quick Check:
Check n > 0 to avoid false positives [OK]
Hint: Always check n > 0 when using bitwise power of two check [OK]
Common Mistakes:
Omitting n > 0 check
Using wrong bitwise operator
Returning wrong data type
5. You want to write a function that returns the smallest power of two greater than or equal to a given positive integer n. Which approach correctly achieves this in C#?
hard
A. Use a loop doubling a variable starting at 1 until it is >= n.
B. Return n & (n - 1) to get the smallest power of two.
C. Return n | (n - 1) to get the smallest power of two.
D. Return n ^ (n - 1) to get the smallest power of two.
Solution
Step 1: Understand the problem requirement
We need the smallest power of two >= n, so start from 1 and double until reaching or exceeding n.
Step 2: Analyze other options
Bitwise operations like AND, OR, XOR with n-1 do not produce the smallest power of two >= n.
Final Answer:
Use a loop doubling a variable starting at 1 until it is >= n. -> Option A
Quick Check:
Doubling loop finds smallest power of two >= n [OK]
Hint: Double from 1 until >= n to find smallest power of two [OK]
Common Mistakes:
Using bitwise AND/OR/XOR incorrectly for this task
Not handling n less than 1
Assuming bitwise ops give next power of two
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.