📖 Scenario: Imagine you are working with a simple digital device that stores numbers in binary form. Sometimes, you need to reverse the order of bits in a number to decode a message or fix a signal.
🎯 Goal: You will write a program that takes a number, reverses its bits, and shows the new number after reversing.
📋 What You'll Learn
Create a variable called num with the value 13.
Create a variable called reversed and set it to 0.
Use a for loop with variable i from 0 to 3 to reverse the bits of num.
Print the value of reversed.
💡 Why This Matters
🌍 Real World
Reversing bits is useful in low-level programming, data encoding, and communication systems where bit order matters.
💼 Career
Understanding bitwise operations and loops is important for roles in embedded systems, firmware development, and performance-critical applications.
Progress0 / 4 steps
1
Create the number variable
Create a variable called num and set it to 13.
DSA Javascript
Hint
Use const num = 13; to create the number variable.
2
Create the reversed variable
Create a variable called reversed and set it to 0.
DSA Javascript
Hint
Use let reversed = 0; to start with zero reversed bits.
3
Reverse the bits using a loop
Use a for loop with variable i from 0 to 3 to reverse the bits of num. Inside the loop, shift reversed left by 1, then add the rightmost bit of num shifted right by i. Use bitwise operators &, >>, and <<.
DSA Javascript
Hint
Use for (let i = 0; i < 4; i++) and update reversed inside the loop.
4
Print the reversed number
Print the value of reversed using console.log(reversed).
DSA Javascript
Hint
Use console.log(reversed); to show the reversed bits as a number.
Practice
(1/5)
1. What does reversing the bits of a number mean in simple terms?
easy
A. Flipping the order of all bits from left to right
B. Changing all 0 bits to 1 bits
C. Adding 1 to the number
D. Multiplying the number by 2
Solution
Step 1: Understand bits as binary digits
Bits are the 0s and 1s that make up a number in binary form.
Step 2: Define reversing bits
Reversing bits means reading the bits from right to left instead of left to right.
Final Answer:
Flipping the order of all bits from left to right -> Option A
Quick Check:
Reverse bits = flip order [OK]
Hint: Think of bits like beads on a string flipped end to end [OK]
Common Mistakes:
Confusing reversing bits with flipping bits (0 to 1)
Thinking reversing bits changes the number by adding or multiplying
Assuming reversing bits means reversing digits in decimal
2. Which of the following JavaScript code snippets correctly reverses the bits of an 8-bit number n?
easy
A. let result = 0; for(let i=0; i<8; i++) { result += (n & 1) << i; n <<= 1; }
B. let result = 0; for(let i=0; i<8; i++) { result |= (n & 1) << i; n >>= 1; }
C. let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; }
D. let result = 0; for(let i=7; i>0; i--) { result |= (n & 1) << i; n >>= 1; }
Solution
Step 1: Analyze the loop and bit operations
let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; } shifts result left, adds least significant bit of n, then shifts n right. This reverses bits correctly.
Step 2: Check other options for errors
let result = 0; for(let i=0; i<8; i++) { result |= (n & 1) << i; n >>= 1; } does not reverse bits, it copies bits in same order. let result = 0; for(let i=7; i>0; i--) { result |= (n & 1) << i; n >>= 1; } shifts bits incorrectly. let result = 0; for(let i=0; i<8; i++) { result += (n & 1) << i; n <<= 1; } shifts n left, which is wrong.
Final Answer:
let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; } -> Option C
Quick Check:
Shift result left + add bit from n right [OK]
Hint: Shift result left, add n's right bit, shift n right [OK]
Common Mistakes:
Shifting n left instead of right
Not shifting result before adding bit
Using wrong loop direction or bit positions
3. What is the output of the following code snippet?
function reverseBits(n) {
let result = 0;
for(let i = 0; i < 4; i++) {
result <<= 1;
result |= (n & 1);
n >>= 1;
}
return result;
}
console.log(reverseBits(13));
Hint: Trace bit shifts and OR operations carefully [OK]
Common Mistakes:
Confusing decimal and binary values
Not shifting result before OR
Looping wrong number of times
4. Find the error in this bit reversal function and choose the corrected version:
function reverseBits(n) {
let result = 0;
for(let i = 0; i < 8; i++) {
result |= (n & 1);
result <<= 1;
n >>= 1;
}
return result;
}
medium
A. Change loop to run 16 times
B. Shift n left instead of right
C. Initialize result with 1 instead of 0
D. Swap the order: shift result left before OR operation
Solution
Step 1: Identify order of operations
Current code ORs bit then shifts result left, causing last bit to be lost.
Step 2: Correct by shifting result left before OR
Shift result left first, then OR with current bit to build reversed bits correctly.
Final Answer:
Swap the order: shift result left before OR operation -> Option D
Quick Check:
Shift before OR to keep all bits [OK]
Hint: Always shift result left before adding new bit [OK]
Common Mistakes:
Shifting result after OR loses last bit
Shifting n left instead of right
Wrong loop count for bit size
5. You want to reverse the bits of a 16-bit number and then check if the reversed number is a palindrome in binary (reads same forwards and backwards). Which approach is correct?
hard
A. Reverse bits using a loop, then check if reversed number equals its own reverse
B. Reverse bits using a loop, then reverse again and compare with original
C. Reverse bits using a loop, then compare reversed number with original
D. Reverse bits using a loop, then convert to decimal and check if even
Solution
Step 1: Reverse bits of the number
Use a loop to reverse all 16 bits correctly.
Step 2: Check palindrome by comparing reversed number with its own reverse
If reversed number equals its reverse, it is a binary palindrome.
Final Answer:
Reverse bits using a loop, then check if reversed number equals its own reverse -> Option A