📖 Scenario: Imagine you are working on a simple calculator app that needs to perform fast doubling and halving of numbers. You want to explore how bit manipulation can help speed up these operations compared to normal arithmetic.
🎯 Goal: Build a small program that uses bit manipulation to double and halve numbers, and compare the results with normal arithmetic operations.
📋 What You'll Learn
Create a variable called number with the value 16.
Create a variable called doubleWithBit that doubles number using bit manipulation.
Create a variable called halfWithBit that halves number using bit manipulation.
Create a variable called doubleWithArithmetic that doubles number using normal multiplication.
Create a variable called halfWithArithmetic that halves number using normal division.
Print all four variables with clear labels.
💡 Why This Matters
🌍 Real World
Bit manipulation is used in low-level programming, graphics, encryption, and performance-critical code where fast math operations are needed.
💼 Career
Understanding bit manipulation helps in embedded systems, game development, and optimizing algorithms for speed and memory.
Progress0 / 4 steps
1
Create the initial number variable
Create a variable called number and set it to 16.
DSA Javascript
Hint
Use const number = 16; to create the variable.
2
Add variables for bit manipulation doubling and halving
Create a variable called doubleWithBit that doubles number using left shift (number << 1). Then create a variable called halfWithBit that halves number using right shift (number >> 1).
DSA Javascript
Hint
Use number << 1 to double and number >> 1 to halve.
3
Add variables for arithmetic doubling and halving
Create a variable called doubleWithArithmetic that doubles number using multiplication number * 2. Then create a variable called halfWithArithmetic that halves number using division number / 2.
DSA Javascript
Hint
Use number * 2 to double and number / 2 to halve.
4
Print all results with labels
Print the values of doubleWithBit, halfWithBit, doubleWithArithmetic, and halfWithArithmetic each with a clear label using console.log.
DSA Javascript
Hint
Use console.log to print each variable with a label.
Practice
(1/5)
1. Why is bit manipulation often faster than arithmetic operations like multiplication or division?
easy
A. Because bit manipulation works directly on binary digits using CPU instructions
B. Because arithmetic operations use less memory
C. Because bit manipulation requires more CPU cycles
D. Because arithmetic operations are always done in parallel
Solution
Step 1: Understand how bit manipulation works
Bit manipulation uses CPU instructions that directly change bits (0s and 1s) in numbers.
Step 2: Compare with arithmetic operations
Arithmetic like multiplication or division involves more complex calculations and takes more CPU cycles.
Final Answer:
Because bit manipulation works directly on binary digits using CPU instructions -> Option A
Quick Check:
Bit manipulation = faster CPU-level operations [OK]
Hint: Bit ops use CPU bits directly, so they run faster [OK]
Common Mistakes:
Thinking arithmetic uses less memory
Believing bit manipulation is slower
Assuming arithmetic is always parallel
2. Which of the following is the correct JavaScript syntax to check if the 3rd bit (from right, zero-based) of a number n is set using bit manipulation?
easy
A. if ((n & (1 << 3)) !== 0) { /* bit is set */ }
B. if ((n | (1 << 3)) === 0) { /* bit is set */ }
C. if ((n & (3 << 1)) !== 0) { /* bit is set */ }
D. if ((n ^ (1 << 3)) !== 0) { /* bit is set */ }
Solution
Step 1: Understand bit checking syntax
To check if a bit is set, use bitwise AND (&) with 1 shifted left by the bit position.
Step 2: Apply to 3rd bit (zero-based)
Shift 1 by 3 places: (1 << 3). Then check if (n & (1 << 3)) is not zero.
Final Answer:
if ((n & (1 << 3)) !== 0) { /* bit is set */ } -> Option A
Quick Check:
Bit check = (n & (1 << 3)) !== 0 [OK]
Hint: Use & with 1 shifted to bit position to check bit [OK]
Common Mistakes:
Using bitwise OR (|) instead of AND (&)
Shifting wrong number of bits
Using XOR (^) which toggles bits
3. What is the output of the following JavaScript code?
let x = 5; // binary 0101
let y = x << 2;
console.log(y);
medium
A. 10
B. 40
C. 20
D. 8
Solution
Step 1: Understand left shift operation
Left shifting by 2 moves bits 2 places left, multiplying the number by 2^2 = 4.
Step 2: Calculate shifted value
5 * 4 = 20, so y = 20.
Final Answer:
20 -> Option C
Quick Check:
5 << 2 = 20 [OK]
Hint: Left shift by n multiplies by 2^n [OK]
Common Mistakes:
Confusing left shift with right shift
Forgetting shift multiplies by powers of two
Assuming shift adds bits instead of moving
4. Find the error in this JavaScript code that tries to clear the 2nd bit of a number num:
num = num & (1 << 2);
medium
A. It should use bitwise OR (|) instead of AND (&)
B. It should use bitwise XOR (^) to clear the bit
C. There is no error; code correctly clears the bit
D. It should use bitwise AND with the negation of the bit mask
Solution
Step 1: Understand clearing a bit
To clear a bit, AND with a mask that has all bits 1 except the target bit 0.
Step 2: Fix the mask
Mask should be ~(1 << 2), so code should be: num = num & ~(1 << 2).
Final Answer:
It should use bitwise AND with the negation of the bit mask -> Option D
Quick Check:
Clear bit = num & ~(1 << bit) [OK]
Hint: Clear bit by AND with negated mask ~(1 << bit) [OK]
Common Mistakes:
Using OR (|) which sets bits instead of clearing
Using XOR (^) which toggles bits
Not negating the mask before AND
5. You want to quickly check if a number n is even or odd without using modulus (%) or division. Which bit manipulation expression correctly does this and why is it faster than arithmetic?
hard
A. (n ^ 1) === 0 because XOR toggles the last bit
B. (n & 1) === 0 because it checks the least significant bit directly
C. (n | 1) === n because OR sets the last bit
D. (n >> 1) === 0 because shifting right divides by 2
Solution
Step 1: Understand even/odd check with bits
The least significant bit (rightmost) is 0 for even numbers and 1 for odd numbers.
Step 2: Use bitwise AND to check LSB
Expression (n & 1) extracts the last bit. If it equals 0, number is even.
Step 3: Why faster than arithmetic
Bitwise AND is a simple CPU instruction, faster than modulus or division.
Final Answer:
(n & 1) === 0 because it checks the least significant bit directly -> Option B
Quick Check:
Even check = (n & 1) === 0 [OK]
Hint: Check even with (n & 1) === 0 for fast bit test [OK]
Common Mistakes:
Using right shift (>>) which changes number value
Using OR (|) which sets bits instead of checking
Using XOR (^) which toggles bits
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.