Visual walkthrough — Bit manipulation — XOR tricks, LSB, counting set bits
3.7.20 · D2· Coding › Algorithm Paradigms › Bit manipulation — XOR tricks, LSB, counting set bits
Hum assume karte hain ki tum sirf yeh jaante ho: ek whole number ko ON/OFF switches ki ek row ke roop mein likha ja sakta hai. Yahi humara poora starting kit hai. Baaki sab kuch — minus sign, &, "lowest set bit" — yahan hum build karenge.
Step 1 — "Switches ki ek row" actually kya hoti hai
KYA. Ek non-negative integer switches ki ek row hoti hai. Right-to-left padhte hue, switch number ki value hai agar woh ON hai (ek ) aur kuch nahi agar woh OFF hai (ek ). Number un sabhi ON switches ka total hota hai.
Yahan switch ki state hai (ON , OFF ), aur yeh batata hai ki woh switch kitna add karta hai agar woh ON ho. Har place value double hoti jaati hai jab tum left ki taraf badhte ho — yahi doubling ki wajah se base 2 kaam karta hai. (Dekhho Logarithms and Powers of Two ki kyun yahan natural ruler hai.)
YEH YAHAN SE KYU SHURU KAREIN. Is page ka har trick kaun se switches ON hain aur kahan hain ke baare mein hai. Isliye humein pehle "switch " ko point karne aur uski price jaanne mein samarth hona chahiye.
PICTURE.

Step 2 — Kisi bhi number ki shape ko naam do
KYA. Koi bhi any lo. ko uske sabse neeche ON switch ki position maano. Toh, "lowest" ki definition se, position se neeche har switch OFF hona chahiye. Isliye duniya ka har number aise dikhta hai:
- = "high part" — position ke upar ke switches. Hum nahi care karte ki woh kya hain; woh kuch bhi ho sakte hain.
- Akela = sabse neeche ON switch, position par baitha.
- trailing zeros = neeche sab kuch, guaranteed OFF kyunki sabse neeche ON switch tha.
KYU. Hum ek aisa proof chahte hain jo har number ke liye kaam kare, isliye ek example ki jagah hum woh general skeleton describe karte hain jo har number share karta hai. Agar hum yeh dikha sakein ki trick is skeleton par kaam karti hai, toh yeh har jagah kaam karti hai.
PICTURE.

Step 3 — Minus sign switches ki row ke saath kya karta hai
KYA. -x karne ke liye ek computer two's complement use karta hai: har switch ko flip karo, phir add karo.
("NOT") har ON ko OFF aur har OFF ko ON kar deta hai. Phir hum seedha add karte hain.
KYU ordinary subtraction ki jagah yeh tool. Hum "kya hai ?" slow tarike se pooch sakte the, lekin woh kahan switches land karte hain chhupa deta hai. Two's complement woh definition hai jo hardware actually use karta hai (dekhho Two's Complement Representation), aur — crucially — yeh ek hi description hai jo humein har switch ki final state predict karne deti hai. AND result prove karne ke liye humein switch-level prediction chahiye, isliye yeh sahi lens hai.
PICTURE.

Step 4 — Skeleton ko flip karo ( banane ka step 1)
KYA. Step 2 ke skeleton par apply karo. Flipping karta hai, akela ho jaata hai, aur trailing ho jaata hai:
- = high part jisme har switch flip ho gaya.
- Position par = humara sabse neeche ON switch, ab OFF ho gaya.
- trailing s = guaranteed zeros, ab sab ON ho gaye.
KYU. Yeh literally two's-complement recipe ka pehla adha hai. Hum ise alag karte hain taaki agla step ( add karna) ek saaf starting picture se shuru ho.
PICTURE.

Step 5 — 1 add karo aur carry ko ripple karte dekho
KYA. Ab mein add karo. add karna sabse rightmost switch ko hit karta hai. Lekin woh switch hai, isliye woh mein flip hota hai aur carry left ki taraf jaata hai. Agla switch bhi hai → mein flip hota hai, phir carry aata hai. Yeh ripple poore trailing ones ke block mein daudta hai aur finally position par rukta hai, jo tha: woh ban jaata hai aur carry khatam ho jaata hai.
- = high part, unchanged — carry kabhi wahan nahi pahuncha.
- Position par = carry finally pehle par utara jo mile aur use ON kar diya.
- trailing s = ripple ne un sabhi s ko wapas mein flip kar diya.
KYU. Yeh carry ripple hi pura raaz hai. Notice karo payoff: position par, dono (Step 2) aur mein hai. se neeche har jagah, dono hain. Yeh alignment wahi hai jo agla step cash karta hai.
PICTURE.

Step 6 — Unhe AND karo, switch by switch
KYA. & (AND) ek switch ko ON tabhi rakhta hai jab woh dono numbers mein ON ho. ko ke upar line up karo aur har column compare karo.
| region | AND result | reason | ||
|---|---|---|---|---|
| high bits | aur uska flip kabhi dono ON nahi | |||
| position | dono ON → bachta hai | |||
| se neeche | dono OFF |
High part isliye khatam ho jaata hai kyunki ek switch aur uska apna flip kabhi dono ON nahi ho sakte — yahi ka matlab hai. Trailing part isliye khatam ho jaata hai kyunki dono OFF hain. Sirf position bachti hai.
- = number aur uske negative ka AND.
- = position par ek akela ON switch — precisely lowest set bit, isolate aur saaf.
KYU. Yeh Step 1 ka goal hai, ab general skeleton ke liye prove ho gaya — isliye yeh har number ke liye hold karta hai.
PICTURE.

Step 7 — Degenerate case:
KYA. Kya hoga agar koi bhi switch ON na ho? Toh , aur bhi (sabhi switches flip karo → sab s; add karo → carry ripple end se nikal jaata hai → sab wapas s). aur ka AND hai.
KYU MATTER KARTA HAI. Jab kuch ON nahi hota toh koi "lowest set bit" nahi hota, isliye trick correctly return karti hai — "koi bit nahi mila" ka honest jawaab. Agar code mein real bit expected hai toh hamesha isse guard karo. Har doosra input () mein kam se kam ek ON switch hota hai, isliye Steps 2–6 unchanged apply hote hain. Koi aur case nahi hain: ek number ya toh all-off hai () ya uska ek well-defined lowest ON switch hai.
PICTURE.

Ek-picture summary

Ek hi canvas par poori derivation: skeleton , uska negative jo flip-then-carry se bana, aur AND jo sirf position par bachta hai.
Recall Feynman retelling — seedhe shabdon mein poora walkthrough
Ek number light switches ki ek row hai. Sabse neeche woh switch dhundho jo jal raha ho — uski jagah ko kaho. Usse neeche sab andhera hai (yahi "lowest" ka matlab hai).
Ab negative banao: har switch flip karo (lights darks se swap ho jaati hain), phir ek add karo. Ek add karna sabse far-right switch ko hit karta hai. Kyunki flipping ne un sab neeche ke switches ko ON kar diya tha, "+1" unhe ek ek karke band kar deta hai, ek chhoti si wave left ki taraf roll karti hai, jab tak woh pehle OFF switch tak nahi pahunch jaati — jo exactly spot par hai. Wahan wave rukti hai aur us switch ko ON kar deti hai.
Toh ab dono rows dekho: original ka sabse neeche light spot par hai; negative ka bhi spot par light hai; aur se neeche dono andhere hain. se upar har jagah, negative original ka exact opposite hai, isliye kisi column mein dono jale nahi hain.
AND ka matlab hai "light tabhi rakho jab DONO rows mein ho." Ek hi jagah dono jale hain woh spot hai. Toh AND sab kuch mita deta hai sirf us ek light ko chhodkar: tum ek akeli glow ke saath bachte ho lowest set bit par — number . Aur agar number shuru se hi andhera tha (), toh uska negative bhi andhera hai, aur kuch nahi bachta — tumhe milta hai, jo sahi "koi bit nahi" answer hai.
Connections
- Two's Complement Representation — woh flip-and-add-one jo Step 5 ka ripple possible karta hai.
- Hash Sets vs O(1)-space tricks — yeh bit scale par O(1)-space philosophy hai.
- Bitmask Dynamic Programming —
x & -xek subset ke members ko ek bit at a time iterate karta hai. - Logarithms and Powers of Two — place-value ruler aur highest-bit contrast.
- Greedy and Divide-and-Conquer (Algorithm Paradigms)