📖 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 to hold the original number.
Create a variable to hold the reversed bits result.
Use a loop to reverse the bits of the number.
Print the reversed number.
💡 Why This Matters
🌍 Real World
Reversing bits is useful in low-level programming, data encoding, and communication protocols.
💼 Career
Understanding bitwise operations is important for embedded systems, network programming, and performance optimization roles.
Progress0 / 4 steps
1
Create the original number
Create a variable called num and set it to 13.
DSA Typescript
Hint
Use let num = 13; to create the number.
2
Create a variable for the reversed bits
Create a variable called reversed and set it to 0.
DSA Typescript
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 (4 bits) to reverse the bits of num. Inside the loop, shift reversed left by 1, then add the least significant bit of num using num & 1. Then shift num right by 1.
DSA Typescript
Hint
Use bitwise operators &, <<, and >> inside the loop.
4
Print the reversed number
Write console.log(reversed) to display the reversed bits number.
DSA Typescript
Hint
The reversed bits of 13 (1101) is 1011 which is 11 in decimal.
Practice
(1/5)
1. What does reversing the bits of a number mean in simple terms?
easy
A. Changing all 0 bits to 1 bits
B. Flipping the order of all bits from left to right
C. Adding 1 to the number
D. Shifting bits to the left by one position
Solution
Step 1: Understand bit order
Bits are arranged from left (most significant) to right (least significant).
Step 2: Reverse means flip order
Reversing bits means the leftmost bit becomes rightmost, second leftmost becomes second rightmost, and so on.
Final Answer:
Flipping the order of all bits from left to right -> Option B
Quick Check:
Reverse bits = flip order [OK]
Hint: Reverse bits means flip their order from left to right [OK]
Common Mistakes:
Thinking reversing bits means changing 0 to 1
Confusing reversing bits with shifting bits
Assuming reversing bits adds or subtracts from number
2. Which TypeScript code snippet correctly reverses the bits of an 8-bit number n?
easy
A. let result = 0; for(let i=0; i<8; i++) { result |= ((n >> i) & 1) << (7 - i); }
B. let result = 0; for(let i=0; i<8; i++) { result |= ((n << i) & 1) << i; }
C. let result = 0; for(let i=0; i<8; i++) { result += (n & 1) << i; n >>= 1; }
D. let result = 0; for(let i = 0; i < 8; i++) { result |= (n & 1) << i; n >>= 1; }
Solution
Step 1: Analyze bit extraction and placement
let result = 0; for(let i=0; i<8; i++) { result |= ((n >> i) & 1) << (7 - i); } extracts each bit from right to left and places it reversed from left to right correctly.
Step 2: Check other options
A extracts LSBs but places them starting from low bits (original order); B uses left shift for extraction which fails to get bits properly; C uses arithmetic + instead of bitwise | and builds original order.
Final Answer:
let result = 0; for(let i=0; i<8; i++) { result |= ((n >> i) & 1) << (7 - i); } -> Option A
Quick Check:
Right shift and left place = correct reverse [OK]
Hint: Shift right to extract bits, shift left to place reversed bits [OK]
Common Mistakes:
Using left shift to extract bits instead of right shift
Not reversing the bit position when placing
Adding bits instead of using bitwise OR
3. What is the output of this TypeScript code?
function reverseBits(n: number): number {
let result = 0;
for (let i = 0; i < 4; i++) {
result |= ((n >> i) & 1) << (3 - i);
}
return result;
}
console.log(reverseBits(6));
medium
A. 6
B. 9
C. 3
D. 12
Solution
Step 1: Convert 6 to 4-bit binary
6 in binary (4 bits) is 0110.
Step 2: Reverse bits
Bits from LSB: 0,1,1,0. Reversed positions yield 0,1,1,0 reversed is 0110 reversed to 0110 reversed is 0110? Actually reversed bits are 0110 reversed to 0110? Let's check carefully.
Hint: Trace bit shifts carefully to find reversed number [OK]
Common Mistakes:
Confusing bit positions when reversing
Assuming reversed bits always change the number
Miscounting bits or loop range
4. Identify the bug in this TypeScript function that reverses 8-bit numbers:
function reverseBits(n: number): number {
let result = 0;
for (let i = 0; i <= 8; i++) {
result |= ((n >> i) & 1) << (7 - i);
}
return result;
}
medium
A. Variable result should be initialized to 1
B. Bitwise OR operator is used incorrectly
C. Shift amount is not adjusted for 8 bits
D. Loop runs one extra time causing incorrect bit shift
Solution
Step 1: Check loop range
The loop runs from i = 0 to i = 8 inclusive, so 9 iterations total, but 8-bit numbers have bits 0 to 7 only.
Step 2: Effect of extra iteration
At i=8, shifting by (7 - 8) = -1 is invalid and causes incorrect behavior or runtime error.
Final Answer:
Loop runs one extra time causing incorrect bit shift -> Option D
Quick Check:
Loop should run 8 times, not 9 [OK]
Hint: Loop from 0 to 7 for 8 bits, not 0 to 8 [OK]
Common Mistakes:
Using <= instead of < in loop condition
Ignoring negative shift values
Initializing result incorrectly
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 compare reversed number to original
B. Reverse bits using a loop, then reverse again and compare to original
C. Reverse bits using a loop, then check if reversed number equals its own reverse
D. Check if original number equals its own reverse without reversing bits
Solution
Step 1: Reverse bits of the number
Use a loop to reverse bits of the 16-bit number to get reversedNum.
Step 2: Check palindrome property
To check if reversedNum is palindrome, reverse reversedNum again and compare with reversedNum itself.
Step 3: Reasoning
If reversedNum equals its own reverse, it is a palindrome in binary.
Final Answer:
Reverse bits using a loop, then check if reversed number equals its own reverse -> Option C