Bird
Raised Fist0
DSA Typescriptprogramming~20 mins

Bit Manipulation Basics AND OR XOR NOT Left Right Shift in DSA Typescript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bitwise Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Bitwise AND and OR Operations
What is the output of the following TypeScript code?
const a = 5;  // binary 0101
const b = 3;  // binary 0011
const andResult = a & b;
const orResult = a | b;
console.log(andResult, orResult);
DSA Typescript
const a = 5;  // binary 0101
const b = 3;  // binary 0011
const andResult = a & b;
const orResult = a | b;
console.log(andResult, orResult);
A1 6
B1 7
C0 7
D0 6
Attempts:
2 left
💡 Hint
Remember how AND and OR work bit by bit.
❓ Predict Output
intermediate
2:00remaining
Result of XOR and NOT Operations
What will be printed by this TypeScript code?
const x = 12;  // binary 1100
const y = 10;  // binary 1010
const xorResult = x ^ y;
const notResult = ~x;
console.log(xorResult, notResult);
DSA Typescript
const x = 12;  // binary 1100
const y = 10;  // binary 1010
const xorResult = x ^ y;
const notResult = ~x;
console.log(xorResult, notResult);
A2 13
B6 13
C6 -13
D2 -13
Attempts:
2 left
💡 Hint
XOR is 1 when bits differ. NOT flips all bits and changes sign.
❓ Predict Output
advanced
2:00remaining
Left and Right Shift Effects
What is the output of this TypeScript code?
let num = 7;  // binary 00000111
const leftShift = num << 2;
const rightShift = num >> 1;
console.log(leftShift, rightShift);
DSA Typescript
let num = 7;  // binary 00000111
const leftShift = num << 2;
const rightShift = num >> 1;
console.log(leftShift, rightShift);
A28 3
B28 6
C14 3
D14 6
Attempts:
2 left
💡 Hint
Left shift multiplies by 2 twice, right shift divides by 2 once.
🔧 Debug
advanced
2:00remaining
Identify the Error in Bitwise NOT Usage
What error or unexpected behavior occurs when running this TypeScript code?
const val = 0;
const result = ~val;
console.log(result);
DSA Typescript
const val = 0;
const result = ~val;
console.log(result);
APrints 0 because NOT of zero is zero
BPrints 1 because NOT flips bits to 1
CThrows a TypeError because ~ is invalid on numbers
DPrints -1 due to two's complement representation
Attempts:
2 left
💡 Hint
Think about how NOT works on binary numbers and two's complement.
🧠 Conceptual
expert
2:00remaining
Effect of Right Shift on Negative Numbers
In TypeScript, what is the output of this code?
const neg = -8;  // binary representation in two's complement
const shifted = neg >> 2;
console.log(shifted);
DSA Typescript
const neg = -8;  // binary representation in two's complement
const shifted = neg >> 2;
console.log(shifted);
A-2
B2
C-3
D3
Attempts:
2 left
💡 Hint
Right shift on negative numbers keeps the sign bit (arithmetic shift).

Practice

(1/5)
1. What is the result of the bitwise AND operation between 5 and 3? (5 = 0101, 3 = 0011 in binary)
easy
A. 1
B. 7
C. 6
D. 0

Solution

  1. Step 1: Convert numbers to binary

    5 in binary is 0101, 3 in binary is 0011.
  2. Step 2: Perform bitwise AND operation

    0101 AND 0011 = 0001 (only bits set in both numbers remain set).
  3. Final Answer:

    1 -> Option A
  4. Quick Check:

    5 & 3 = 1 [OK]
Hint: AND keeps bits set in both numbers only [OK]
Common Mistakes:
  • Confusing AND with OR operation
  • Not converting numbers to binary before operation
  • Assuming decimal addition instead of bitwise operation
2. Which of the following is the correct TypeScript syntax to perform a bitwise XOR between variables a and b?
easy
A. let result = a && b;
B. let result = a % b;
C. let result = a | b;
D. let result = a ^ b;

Solution

  1. Step 1: Identify bitwise XOR operator in TypeScript

    The bitwise XOR operator is the caret symbol (^).
  2. Step 2: Check each option for correct syntax

    let result = a ^ b; uses ^ correctly. let result = a && b; uses logical AND (&&), let result = a | b; uses bitwise OR (|), let result = a % b; uses modulus (%).
  3. Final Answer:

    let result = a ^ b; -> Option D
  4. Quick Check:

    Bitwise XOR uses ^ operator [OK]
Hint: XOR operator is ^ in TypeScript [OK]
Common Mistakes:
  • Using logical operators instead of bitwise
  • Confusing OR (|) with XOR (^)
  • Using modulus operator (%) by mistake
3. What is the output of the following TypeScript code?
const x = 8; // binary 1000
const y = x >> 2;
console.log(y);
medium
A. 0
B. 2
C. 1
D. 4

Solution

  1. Step 1: Understand right shift operation

    Right shift (>>) moves bits to the right by the specified number, dropping rightmost bits.
  2. Step 2: Apply right shift to 8 (1000 binary)

    Shifting 1000 right by 2 bits gives 0010 binary, which is 2 in decimal.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    8 >> 2 = 2 [OK]
Hint: Right shift divides by 2 for each shift [OK]
Common Mistakes:
  • Confusing right shift with left shift
  • Not converting binary to decimal after shift
  • Assuming shift adds zeros on left without dropping bits
4. Identify the error in this TypeScript code snippet:
let a = 5;
let b = 3;
let c = a <<< b;
console.log(c);
medium
A. <<< is not a valid bitwise operator
B. Variables a and b must be strings
C. Missing semicolon after variable declarations
D. Bitwise operators cannot be used with let variables

Solution

  1. Step 1: Check the bitwise operators in TypeScript

    Valid bitwise shift operators are << (left shift) and >> (right shift). There is no <<< operator.
  2. Step 2: Identify the invalid operator usage

    The code uses <<< which is invalid syntax and will cause an error.
  3. Final Answer:

    <<< is not a valid bitwise operator -> Option A
  4. Quick Check:

    Only << and >> are valid shift operators [OK]
Hint: Use only << or >> for shifts, not <<< or >>> [OK]
Common Mistakes:
  • Using triple shift operator like in some other languages
  • Assuming semicolons are mandatory for correctness
  • Thinking bitwise operators require specific variable types
5. Given n = 29 (binary 11101), which expression will toggle the 3rd bit (counting from 0 at right) using bitwise XOR in TypeScript?
Choose the correct code snippet.
hard
A. let result = n | (1 << 3);
B. let result = n & (1 << 3);
C. let result = n ^ (1 << 3);
D. let result = ~n ^ (1 << 3);

Solution

  1. Step 1: Understand toggling a bit with XOR

    XOR with 1 flips the bit; XOR with 0 leaves it unchanged.
  2. Step 2: Create mask for 3rd bit

    1 << 3 shifts 1 to the 3rd bit position (binary 1000).
  3. Step 3: Apply XOR to toggle the bit

    n ^ (1 << 3) flips the 3rd bit of n.
  4. Final Answer:

    let result = n ^ (1 << 3); -> Option C
  5. Quick Check:

    XOR with mask toggles bit [OK]
Hint: XOR with 1 at bit toggles it, 0 leaves it same [OK]
Common Mistakes:
  • Using AND or OR instead of XOR to toggle bits
  • Incorrect bit position shift
  • Using NOT operator incorrectly with XOR
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