3.1.2 · Hardware › Boolean Algebra & Logic Gates
Computers binary (0s aur 1s) mein sochte hain, lekin lambi binary strings jaise 11010110 ko humans ke liye padhna, likhna, aur bina galti copy karna bahut mushkil hai. Hexadecimal (base 16) aur octal (base 8) binary ke liye shorthand hain. Inke exist karne ki puri wajah: 16 = 2 4 aur 8 = 2 3 , isliye har hex digit exactly 4 bits pack karta hai aur har octal digit exactly 3 bits pack karta hai. Bits ko neat chunks mein group karne se hum ek 8-bit byte ko 8 characters se sirf 2 hex digits mein shrink kar sakte hain.
Intuition "Sirf decimal use karo" idea ko steel-man karna
Decimal (base 10) humein natural lagta hai, toh binary ko seedha decimal mein convert kyun na karein? Kyunki 10 2 ki power nahi hai. Decimal aur binary ke beech koi clean, digit-by-digit mapping nahi hai — tumhe poori division arithmetic karni padti hai. Hex aur octal bit boundaries ke saath perfectly align hote hain, isliye conversion sirf binary string ko groups mein chop karna hai. Yahi inka killer feature hai.
b (radix-b ) number
Base b mein, ek number digits ki string d n d n − 1 … d 1 d 0 ke roop mein likha jaata hai, jahan har digit 0 ≤ d i < b satisfy karti hai, aur iska value hai
value = ∑ i d i ⋅ b i
Exponent i position (place value) hai. b base ya radix hai.
System
Base b
Digits used
Binary
2
0,1
Octal
8
0–7
Decimal
10
0–9
Hex
16
0–9, A,B,C,D,E,F
Definition Hex letter digits
Kyunki 9 ke baad humare paas numeric symbols khatam ho jaate hain, hex letters use karta hai: A = 10 , B = 11 , C = 12 , D = 13 , E = 14 , F = 15 .
Bas definition mein plug karo. Har digit ko uske place value b i se multiply karo aur add karo.
Intuition Baar baar base se divide kyun karte hain?
Jab tum N ko b se divide karte ho, remainder exactly last digit d 0 hota hai (kyunki i ≥ 1 wale har higher term d i b i ko b se divide kiya ja sakta hai, toh sirf d 0 remainder ke roop mein bachta hai). Quotient woh number hai jo ek digit "right mein shift" ho gaya ho. Remainders ko bottom-up read karte hue repeat karo.
4 7 10 → hex
47 ÷ 16 = 2 r 15 ( = F ) 2 ÷ 16 = 0 r 2
Remainders bottom→top padhein: 2 , F ⇒ 2 F 16 .
Bottom→top kyun? Pehla remainder sabse chhota place value hai (1 6 0 ), isliye woh right mein jaana chahiye.
1101011 0 2 → octal
Right se 3s mein group karo: 3 011 2 010 6 110
(leftmost group 11 ko 011 se pad karo)
⇒ 32 6 8
Pad kyun? 8 bits, 3 ka multiple nahi hai; left mein zeros se padding karne se value nahi badlti.
Worked example Hex → octal (binary se hoke jaao)
2F 16 : har hex digit ko 4 bits mein expand karo → 0010 1111 . Right se 3s mein regroup karo: 00 101111 → 0 010 1111 → 5 101 7 111 leading 0 ke saath → 10111 1 2 = 5 7 8 .
Binary se hoke kyun? Hex aur octal ek doosre ke saath align nahi hote (unke group sizes 4 aur 3 alag hain), lekin dono binary ke saath align hote hain — isliye binary universal middle-man hai.
Definition Real hardware/code mein bases kaise mark hote hain
Subscript: 2F 16 , 10 1 2 , 1 7 8 .
Hex prefix: 0x2F (C, Python) ya $2F (assembly) ya 2Fh.
Octal prefix: 0o17 (Python) ya leading 0 jaise 017 (old C).
Binary prefix: 0b101.
Common mistake Bits ko LEFT se group karna
Kyun sahi lagta hai: Hum English left-to-right padhte hain, isliye left se grouping shuru karte hain.
Kyun galat hai: Place values right se badhti hain (2 0 , 2 1 , … ). Left se grouping karne se powers mis-align ho jaati hain.
Fix: Hamesha right se group karo; leftmost group ko leading zeros se pad karo.
Common mistake Yeh bhool jaana ki
A –F digits hain, variables nahi
Kyun sahi lagta hai: Maths mein letters usually unknowns ke liye hote hain.
Fix: Hex mein, A –F fixed values 10 –15 hain. 0xFF = 15 ⋅ 16 + 15 = 255 .
Common mistake Hex ko octal ke saath seedha "digit swapping" se mix karna
Kyun sahi lagta hai: Dono sirf "grouped binary" hain, toh lagta hai groups swap kar sakte hain.
Fix: 4 -bit aur 3 -bit groups ek doosre se align nahi hote. Hamesha binary ke through jaao.
Common mistake Yeh sochna ki
10 har base mein "ten" hota hai
Fix: 1 0 2 = 2 , 1 0 8 = 8 , 1 0 16 = 16 . Kisi bhi base b mein, "10 " ka matlab b khud hai.
Recall Feynman: 12-saal ke bacche ko samjhao
Socho binary ek bahut lamba word hai jo sirf I aur O letters se bana hai, aur use miscopy karna aasaan hai. Hex ek secret code ki tarah hai jahan har 4 letters ko ek single nickname milta hai (0–9, phir A–F). Octal bhi yahi karta hai lekin 3 letters per nickname ke saath. Toh ek giant binary word ek short, tidy code ban jaata hai. Decode karne ke liye, tum bas har nickname ko uske chhote bits mein wapas spell karo — koi maths nahi chahiye. Ten (decimal) yeh trick nahi kar sakta kyunki 10 pure "doublings" se nahi bana jaise 8 aur 16 hain.
Mnemonic Group sizes yaad karo
"Hex ke 4 pair hain, Octal ke 3 pair hain." (Hex = 2 4 → 4 bits; Octal = 2 3 → 3 bits.) Aur bhi: F ifteen sabse bada hex digit hai (F = 15 ).
Ek hex digit exactly 4 bits se kyun map hota hai? Kyunki 16 = 2 4 , isliye hex digits 0 –15 one-to-one correspond karte hain 4 bits ke 16 patterns ke saath.
Ek octal digit exactly 3 bits se kyun map hota hai? Kyunki 8 = 2 3 ; 8 octal digits 3 bits ke saare 8 patterns cover karte hain.
Hex digit F ki value kya hai? 15 .
10 1 2 ki value "one zero one" words mein — base b mein 10 kya hota hai?Kisi bhi base b mein, "10 " equals b khud (1 0 2 = 2 , 1 0 16 = 16 ).
Binary ko hex mein group karte waqt, kis side se group karte hain aur kyun? Right se, kyunki place values (2 0 , 2 1 , … ) right se shuru hoti hain; left ko zeros se pad karo.
2F 16 ko decimal mein convert karo.2 ⋅ 16 + 15 = 47 .
1101011 0 2 ko hex mein convert karo.1101 0110 = D6 16 .
1101011 0 2 ko octal mein convert karo.011 010 110 = 32 6 8 .
Hex↔octal ko binary ke through kyun convert karte hain? 4-bit aur 3-bit groups ek doosre ke saath align nahi hote, lekin dono binary ke saath align hote hain, jo common middle-man hai.
Decimal→base b convert karne ke liye repeated division mein, remainders bottom-to-top kyun padhte hain? Pehla remainder sabse chhota place value (b 0 ) hai, isliye woh right mein belong karta hai (last padhaa jaata hai).
0xFF decimal mein kya equal hai?255 (15 ⋅ 16 + 15 ).
16 equals 2^4 packs 4 bits
8 equals 2^3 packs 3 bits