Isse pehle ki tum "big-endian ya little-endian?" poochho, tumhe kuch ideas mein already fluent hona chahiye jinhe parent note quietly assume karta hai: ki ek bit kya hota hai, ek byte kya hota hai, ek address kya hota hai, significance ka matlab kya hai, aur woh darawna-sa 256k actually kya count karta hai. Yeh page inhe sab ko ek ek karke, kuch bhi nahi se, ek dusre ke upar build karta hai.
Bit ki zaroorat isliye hai kyunki yeh sabhi digital storage ka atom hai. Upar ki sab cheezein — bytes, numbers, addresses — sirf ek group of bits hain jinka ek agreed meaning hai.
Figure 1 mein do switches side by side dikhaye gaye hain: teal wala neeche (value 0, off) aur orange wala upar (value 1, on). Ise ek bit ki visual definition ki tarah padho — sirf do states exist karti hain, beech mein kuch nahi.
Figure 1 — Ek bit ek switch hai: neeche = 0 (off), upar = 1 (on). Koi teesra option nahi.
256 kyun? Har 8 bits mein se har ek bit patterns ki sankhya ko double karta hai: 2×2×… (aath baar) =28=256. Neeche 8 switches ki strip dekho — har distinct arrangement ek value hai.
Byte isliye matter karta hai kyunki yeh sabse chhota chunk hai jo memory actually deta hai. Tum memory se kabhi ek single bit fetch nahi karte; tum poore bytes fetch karte ho. Yahi wajah hai ki endianness exist karta hai — ek bada number bytes mein split karna padta hai, bits mein nahi.
Figure 2 mein ek byte ko 8 colored switches ki row ki tarah draw kiya gaya hai jo pattern 00010010 pe set hai. Orange switches 1 hain, teal 0 hain; har ek ke neeche uska bit number dikh raha hai (7 far left par down to 0 far right par, aboove define ki gayi numbering se match karta hai). Woh exact pattern woh value hai jise hum 0x12 ke roop mein phir milenge. Figure use karo dekho ki "ek byte = eight ordered on/off cells" ka matlab kya hai.
Figure 2 — Ek byte = 8 ordered bits, numbered 7 (sabse left, worth 2⁷) down to 0 (sabse right, worth 2⁰). Pattern 00010010 yahan value 0x12 (decimal 18) hai.
Do hex digits ek byte ke barabar kyun hote hain? Kyunki 16×16=256 — exactly ek byte mein patterns ki sankhya. Ek hex digit ek nibble cover karta hai (4 bits), toh do hex digits dono nibbles cover karte hain (8 bits).
Hex ki zaroorat isliye hai kyunki parent note 0x12345678 jaisi values likhta hai — woh sirf 4 bytes hain (12, 34, 56, 78), har ek do hex digits ka pair. Hex byte boundaries ko ek nazar mein visible bana deta hai.
0x12345678 ke liye, far left ka 12 MSB hai (sabse zyada worth karta hai) aur far right ka 78 LSB hai (sabse kam worth karta hai). Yahi ordering hai jiski wajah se "big end" vs "little end" ka koi matlab banta hai.
Figure 3 mein 0x12345678 ke char bytes ko bars ki tarah stack kiya gaya hai jinka height unki significance hai: tall orange 0x12 (weighted by 2563) se neeche chhote 0x78 tak (weighted by 2560). Top par arrow yaad dilata hai ki significance LSB ki taraf right move karne par decrease karti hai.
Figure 3 — 0x12345678 ke char bytes significance ke hisaab se rank kiye gaye: MSB 0x12 (×256³) sabse zyada worth karta hai, LSB 0x78 (×256⁰) sabse kam.
Exactly 256k kyun aur kuch aur kyun nahi? Kyunki har byte 8 bits contribute karta hai, aur 28=256. Ek byte ke neeche k bytes stack karne se us byte ki value 256 se exactly k baar multiply hoti hai — woh hai 256k. Note karo 2560=1 (koi bhi number power 0 par 1 hota hai), toh LSB 1 se weighted hota hai: woh sach mein "ones" byte hai.
Parent ka key formula hai bk=⌊V/256k⌋mod256. Yahan do nayi symbols aate hain; dono ek precise question ka jawab dete hain.
Yeh do kyun, aur kyun saath mein? Byte number k grab karne ke liye tumhe (1) uske neeche ke k bytes ko shift away karna hai, phir (2) bottom mein sirf ek byte keep karna hai:
256k se divide karna byte k ko "ones" position par slide kar deta hai — lekin higher bytes upar chipke rehte hain. floor koi bhi fractional leftovers saaf kar deta hai taaki hamare paas clean whole number rahe.
Tab mod 256 bottom byte ke upar ki sab cheezein kaat deta hai — kyunki 256 exactly ek byte ki values ka ek hissa hai.