Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Reverse Bits of a Number in DSA Typescript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to initialize the result variable to zero.

DSA Typescript
let result = [1];
Drag options to blanks, or click blank then click option'
A0
Bundefined
Cnull
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Initializing result with 1 or null instead of 0.
2fill in blank
medium

Complete the code to extract the least significant bit from n.

DSA Typescript
let bit = n [1] 1;
Drag options to blanks, or click blank then click option'
A|
B&
C^
D>>
Attempts:
3 left
💡 Hint
Common Mistakes
Using | or ^ instead of & to extract the bit.
3fill in blank
hard

Fix the error in the code to shift the result left by one bit.

DSA Typescript
result = result [1] 1;
Drag options to blanks, or click blank then click option'
A>>
B-
C+
D<<
Attempts:
3 left
💡 Hint
Common Mistakes
Using + or >> instead of << for shifting bits left.
4fill in blank
hard

Fill both blanks to update result with the new bit and shift n right.

DSA Typescript
result = (result [1] bit);
n = n [2] 1;
Drag options to blanks, or click blank then click option'
A|
B&
C>>
D<<
Attempts:
3 left
💡 Hint
Common Mistakes
Using & instead of | to add bit, or << instead of >> to shift n.
5fill in blank
hard

Fill all three blanks to complete the reverseBits function.

DSA Typescript
function reverseBits(n: number): number {
  let result = [1];
  for (let i = 0; i < 32; i++) {
    let bit = n [2] 1;
    result = (result << 1) [3] bit;
    n = n >> 1;
  }
  return result;
}
Drag options to blanks, or click blank then click option'
A0
B&
C|
D<<
Attempts:
3 left
💡 Hint
Common Mistakes
Not shifting result left before OR, or wrong initialization of result.

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

  1. Step 1: Understand bit order

    Bits are arranged from left (most significant) to right (least significant).
  2. Step 2: Reverse means flip order

    Reversing bits means the leftmost bit becomes rightmost, second leftmost becomes second rightmost, and so on.
  3. Final Answer:

    Flipping the order of all bits from left to right -> Option B
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    let result = 0; for(let i=0; i<8; i++) { result |= ((n >> i) & 1) << (7 - i); } -> Option A
  4. 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

  1. Step 1: Convert 6 to 4-bit binary

    6 in binary (4 bits) is 0110.
  2. 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.
  3. Step 3: Dry run code

    i=0: (6 >> 0) & 1 = 0 << 3 = 0
    i=1: (6 >> 1) & 1 = 1 << 2 = 4 (result=4)
    i=2: (6 >> 2) & 1 = 1 << 1 = 2 (result=6)
    i=3: (6 >> 3) & 1 = 0 << 0 = 0 (result=6)
  4. Step 4: Check if output matches options

    Output is 6, but 9 is 9, 6 is 6.
  5. Final Answer:

    6 -> Option A
  6. Quick Check:

    Reverse bits of 6 (0110) = 6 [OK]
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

  1. 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.
  2. Step 2: Effect of extra iteration

    At i=8, shifting by (7 - 8) = -1 is invalid and causes incorrect behavior or runtime error.
  3. Final Answer:

    Loop runs one extra time causing incorrect bit shift -> Option D
  4. 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

  1. Step 1: Reverse bits of the number

    Use a loop to reverse bits of the 16-bit number to get reversedNum.
  2. Step 2: Check palindrome property

    To check if reversedNum is palindrome, reverse reversedNum again and compare with reversedNum itself.
  3. Step 3: Reasoning

    If reversedNum equals its own reverse, it is a palindrome in binary.
  4. Final Answer:

    Reverse bits using a loop, then check if reversed number equals its own reverse -> Option C
  5. Quick Check:

    Palindrome check = reversedNum == reverse(reversedNum) [OK]
Hint: Check palindrome by reversing reversed number and comparing [OK]
Common Mistakes:
  • Comparing reversed number to original instead of itself
  • Not reversing reversed number for palindrome check
  • Assuming original number palindrome means reversed number palindrome
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard