0
0
DSA Pythonprogramming~10 mins

Check if Number is Power of Two in DSA Python - Execution Trace

Choose your learning style9 modes available
Concept Flow - Check if Number is Power of Two
Start with number n
Check if n <= 0?
YesReturn False
No
Check n & (n-1) == 0?
YesReturn True
No
Return False
Start with the number, reject non-positive numbers, then use bitwise check to decide if it's a power of two.
Execution Sample
DSA Python
def is_power_of_two(n):
    if n <= 0:
        return False
    return (n & (n - 1)) == 0
This function returns True if n is a power of two, otherwise False.
Execution Table
StepOperationnn-1Bitwise AND (n & (n-1))ResultReturn Value
1Input number87---
2Check if n <= 08--False-
3Calculate n-187---
4Calculate n & (n-1)870--
5Check if n & (n-1) == 0870True-
6Return result870TrueTrue
7Input number109---
8Check if n <= 010--False-
9Calculate n-1109---
10Calculate n & (n-1)1098--
11Check if n & (n-1) == 01098False-
12Return result1098FalseFalse
💡 Function returns True if bitwise AND is zero and n > 0, else False.
Variable Tracker
VariableStartAfter Step 3 (n-1)After Step 4 (n & (n-1))Final
nInput value8 / 108 / 108 / 10
n-1-7 / 97 / 97 / 9
n & (n-1)--0 / 80 / 8
Return Value---True / False
Key Moments - 3 Insights
Why do we check if n <= 0 first?
Because powers of two are positive numbers. The check stops negative numbers and zero early, as shown in execution_table rows 2 and 8.
Why does (n & (n-1)) == 0 mean n is a power of two?
Because powers of two have only one '1' bit in binary. Subtracting 1 flips that bit and all lower bits, so AND becomes zero. See execution_table rows 4 and 10.
What happens if n is not a power of two?
The bitwise AND is not zero, so the function returns False, as in execution_table rows 10-12.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4 for n=8, what is the value of n & (n-1)?
A8
B0
C7
D1
💡 Hint
Check the 'Bitwise AND (n & (n-1))' column at step 4 for n=8.
At which step does the function return False for n=10?
AStep 12
BStep 11
CStep 8
DStep 10
💡 Hint
Look at the 'Return Value' column for n=10 in execution_table.
If n was 1, what would (n & (n-1)) equal and what would the function return?
A0 and False
B1 and False
C0 and True
D1 and True
💡 Hint
Recall that 1 in binary is 1, and 1-1=0, so AND is 0; function returns True.
Concept Snapshot
Check if n <= 0: return False
Else return (n & (n-1)) == 0
Only powers of two have one '1' bit
Bitwise AND clears lowest set bit
If result is zero, n is power of two
Full Transcript
This concept checks if a number is a power of two using bitwise operations. First, it rejects non-positive numbers because powers of two are positive. Then it uses the fact that powers of two have exactly one bit set in binary. By computing n & (n-1), it clears the lowest set bit. If the result is zero, it means there was only one bit set, so n is a power of two. The execution table shows step-by-step how the function processes inputs 8 and 10, returning True for 8 and False for 10. The variable tracker follows the values of n, n-1, and the bitwise AND operation. Key moments clarify why the initial check is needed and why the bitwise trick works. The quiz tests understanding of these steps.