What if you could control dozens of switches with just one simple number and a few magic moves?
Why Bit Manipulation Basics AND OR XOR NOT Left Right Shift in DSA Javascript?
Imagine you want to quickly check if a light switch is on or off in a huge building with many switches. Doing this one by one, by looking at each switch, is slow and tiring.
Manually checking or changing each switch takes a lot of time and can cause mistakes. It's like flipping many switches one by one instead of using a control panel that can handle many switches at once.
Bit manipulation lets you treat many switches as a single number and use simple operations to check, turn on, turn off, or flip switches quickly and without errors.
let switches = [0,1,0,1]; // Check each switch for(let i=0; i<switches.length; i++) { if(switches[i] === 1) console.log('Switch ' + i + ' is ON'); }
let switches = 0b0101; // binary for 5 // Check if 2nd switch is ON if(switches & (1 << 1)) console.log('Switch 1 is ON');
Bit manipulation enables lightning-fast control and checking of multiple on/off states using just a few simple operations.
In video games, bit manipulation is used to quickly track which keys are pressed or which game features are active without slowing down the game.
Manual checking of many on/off states is slow and error-prone.
Bit manipulation treats many states as bits in a number for fast operations.
It uses simple AND, OR, XOR, NOT, and shifts to control bits efficiently.
Practice
5 and 3? (5 & 3)Solution
Step 1: Convert numbers to binary
5 in binary is 0101, 3 in binary is 0011.Step 2: Perform bitwise AND
0101 & 0011 = 0001 (only bits set in both numbers remain set).Final Answer:
1 -> Option AQuick Check:
5 & 3 = 1 [OK]
- Confusing AND with OR operation
- Not converting numbers to binary before operation
- Assuming decimal addition instead of bitwise
a and b in JavaScript?Solution
Step 1: Identify bitwise XOR operator in JavaScript
The XOR operator is represented by the caret symbol (^).Step 2: Check syntax correctness
let result = a ^ b; usesa ^ b, which is the correct syntax for bitwise XOR.Final Answer:
let result = a ^ b; -> Option DQuick Check:
XOR operator is ^ in JavaScript [OK]
- Using && which is logical AND, not bitwise
- Using | which is bitwise OR, not XOR
- Using % which is modulo, unrelated to bits
let x = 8; // binary 1000 let y = x >> 2; console.log(y);
Solution
Step 1: Understand right shift operation
Right shift by 2 means move bits 2 places to the right, dropping the rightmost bits.Step 2: Apply right shift on binary 1000
1000 >> 2 becomes 0010, which is decimal 2.Final Answer:
2 -> Option AQuick Check:
8 >> 2 = 2 [OK]
- Confusing right shift with left shift
- Not converting binary to decimal after shift
- Assuming shift adds zeros on left without dropping bits
n using bitwise NOT:let n = 5; let flipped = ~n; console.log(flipped);
What is the issue?
Solution
Step 1: Understand bitwise NOT in JavaScript
Bitwise NOT flips all bits and returns the two's complement negative number.Step 2: Explain why output is negative
For 5 (00000101), ~5 flips bits to 11111010 which is -6 in two's complement.Final Answer:
Bitwise NOT returns a negative number due to two's complement representation -> Option BQuick Check:
~n flips bits and returns negative number [OK]
- Expecting positive flipped bits as output
- Thinking ~ is unsupported operator
- Assuming input must be string for bitwise ops
num to 1 without changing other bits. Which expression correctly does this in JavaScript?Solution
Step 1: Understand setting a bit using OR and shift
Left shift 1 by 3 gives 00001000, which targets the 3rd bit.Step 2: Use OR to set the bit without changing others
OR with this mask sets the 3rd bit to 1, keeping others unchanged.Final Answer:
num = num | (1 << 3); -> Option CQuick Check:
Use OR with shifted 1 to set bit [OK]
- Using AND which clears bits instead of setting
- Using XOR which toggles bits and may unset
- Using left shift alone which changes number value
Ready to prove it?
Pass the test and this pattern moves unknown
