Visual walkthrough — Endianness (big vs little)
5.1.11 · D2· Hardware › Instruction Set Architecture (ISA) › Endianness (big vs little)
Yeh page parent note Endianness (big vs little) ko bilkul zero se rebuild karta hai. Jo bhi use hua hai, woh pehle define kiya gaya hai.
Step 1 — Byte kya hota hai, aur address kya hota hai?
KYA. Memory ek lambi row of tiny boxes hai. Har box mein exactly ek byte hota hai — ek number se tak. Har box ka ek numbered label hota hai jise uska address kehte hain: Kyunki har box ka apna address hai, hum memory ko byte-addressable kehte hain.
KYUN. Bytes ki order ki baat karne se pehle, hume agree karna hoga ki byte kya hai (ek box, jo – store karta hai) aur address kya hai (box ka numeric label). Order ka koi matlab tabhi hai jab boxes line up karke number ho.
PICTURE. White boxes ki row dekho. Har box ke neeche ka number (grey) uska address hai; woh address sirf boxes count karta hai, bits nahi.

– kyun? Ek byte bits ka hota hai, aur alag-alag patterns hote hain, yaani values se tak. Yeh Data Representation se connect hota hai.
Step 2 — Ek box kaafi kyun nahi hota
KYA. 32-bit value lo Yahan "32-bit" ka matlab hai ise bits bytes chahiye. Ek box sirf bits hold karta hai, isliye ek single box mein fit nahi ho sakta.
KYUN. Yahi poori wajah hai ki endianness exist karta hai: value boxes mein phail jaati hai, aur boxes consecutive addresses par hote hain, toh kuch na kuch decide karna hoga ki ka kaunsa hissa kaunse box mein jaayega.
PICTURE. Pura 32-bit bar chaar 8-bit chunks mein slice ho jaata hai. Har chunk ek byte hai jise hume kahin rakhna hai.

- — sabse baaye do hex digits; sabse zyada weight wala chunk.
- — sabse daaye do hex digits; sabse kam weight wala chunk.
Step 3 — Significance: chunks equal kyun nahi hote
KYA. Charon chunks ek jaisi counting nahi karte. ko ek real number ki tarah padhte hue:
Term by term:
- — top byte, se multiply hua (left bits shift hua). Sabse bada contribution → most significant byte (MSB).
- — agla byte, weight .
- — weight .
- — "ones" byte, weight → least significant byte (LSB).
KYUN. Storage order choose karne se pehle yeh weighting chahiye, kyunki dono conventions literally isi se define hote hain ki kaun sa weight lowest address par jaata hai. Yeh jaane bina ki kaunsa byte "sabse bada" hai, big-endian aur little-endian ka koi matlab nahi.
PICTURE. Chaar weights ka log scale par ek bar chart — aap dekh sakte hain ki dominate karta hai aur bahut chhota hai.

Step 4 — Big-endian: bada end pehle rakho
KYA. ko base address se store karo. Big-endian rule: MSB lowest address par jaata hai.
KYUN. "Big-endian" = "big end pehle." Kyunki wala box pehla box hai, hum wahan sabse bada byte rakh dete hain. Isse ek memory dump left-to-right bilkul human-written number ki tarah readable hoti hai.
PICTURE. Dekho chaar coloured chunks seedha neeche boxes mein girte hain same order mein jaise woh number mein hain — koi crossing wires nahi.

Formula form mein, offset par:
- — reversed index. par hume top byte chahiye; par chahiye. Toh . ✓
Step 5 — Little-endian: chhota end pehle rakho
KYA. Same value, same base . Little-endian rule: LSB lowest address par jaata hai.
KYUN. "Little end pehle." Ones-byte sabse chhote address par hota hai. Ek elegant match note karo: offset par jo byte hai woh exactly hai — offset equals significance index.
PICTURE. Ab chunks cross over karte hain: sabse daaya chunk sabse baaye box mein swing karta hai. Crossing wires little-endian ki visual signature hai.

- — koi reversal nahi. , . ✓
Step 6 — Payoff case: kam bytes padhna
KYA. Chhoti value lo address par, aur pucho: agar main address 100 par sirf 1 byte padhuun toh?
- Little-endian: . par byte padhne se milta hai — sahi value!
- Big-endian: . par byte padhne se milta hai — galat; par chhupa hai.
KYUN. Little-endian mein lowest address par byte hamesha low-order part hota hai, isliye ek -bit read ko -bit tak widen karna "free" hai: extra high bytes already higher addresses par hain. Yahi ek practical reason hai ki little-endian common hai (dekho Memory Addressing).
PICTURE. Green arrow address par ek box read karta hai. Little-endian ka arrow par land karta hai; big-endian ka par.

Step 7 — Degenerate & edge cases (koi gap mat chhodo)
KYA & KYUN. Har scenario, taaki reader ko kuch surprise na kare:
- Ek single byte (). Tab , toh big aur little identical layout dete hain . Ek one-byte value ki koi endianness nahi hoti.
- Ek byte array / string . Har element apna khud ka one-byte scalar hai. Toh
Hphiridono machines par — array element order endianness nahi hai. (Dekho Pointers and Type Punning.) - Value . Saare bytes hain; dono conventions store karte hain — indistinguishable.
- Kisi byte ke andar bits kabhi touch nahi hote. hi rehta hai; sirf whole boxes move hote hain.
PICTURE. Left: case, dono rules agree karte hain. Right: string case, H/i dono par same order mein — ek red "✗ not endianness" stamp ke saath.

Step 8 — Detection trick, derived
KYA. int x = 1; store karo, phir lowest address par single byte padho.
- Agar woh byte hai → little-endian.
- Agar woh byte hai → big-endian.
KYUN. Value ka exactly ek nonzero byte hai: uska LSB hai, aur . Toh akele byte ki location rule reveal karti hai. Little-endian LSB (the ) ko lowest address par rakhta hai; big-endian use highest par chhupa deta hai.
PICTURE. Number ke dono layouts; ek pointer box read karta hai aur result ( vs ) har machine ko label karta hai.

Ek-picture summary
Sab kuch ek saath: number significance se split hua, reconstruction weights, aur dono storage orders side by side — big-endian straight-down, little-endian crossed-over.

Recall Poore walkthrough ki Feynman retelling
Ek number jo ek mailbox mein fit nahi hota, woh chaar byte-chunks mein slice ho jaata hai. Chunks equal nahi hote: sabse baaya "big" chunk hai (worth ), sabse daaya "ones" chunk hai (worth ) — yahi woh formula measure karta hai, low chunks ko divide karke hataata hai aur bottom one rakhta hai. Ab chaar mailboxes line up karo. Big-endian pehle mailbox mein big chunk drop karta hai, toh ek memory dump normal number ki tarah read hoti hai. Little-endian pehle little (ones) chunk drop karta hai, jo wires cross karta hai lekin iska matlab hai ki pehla mailbox hamesha low-order part hota hai — toh sirf ek byte padhne se chhoti value free mein mil jaati hai. Ek one-byte value ya ek text string dono taraf identical dikhti hai, kyunki reorder karne ke liye kuch hai hi nahi. Aur classic test: number store karo; uska sirf nonzero byte hai — jis bhi mailbox mein woh land kare woh aapko machine ka rule bata deta hai. Har baar same number; sirf mailbox-order badalta hai.
Recall
Ek single-byte value ki endianness kyun nahi hoti?
Formula mein, se divide karna kya karta hai?
Little-endian: offset par byte equals?
Big-endian: offset par byte equals?
Little-endian mein 8→32-bit read widen karna "free" kyun hai?
int 1 store karo; lowest address par byte 0x01 hai — kaun sa endianness?
Kya {'H','i'} endianness se reorder hota hai?
Connections
- Endianness (big vs little) — parent topic; yeh page uska picture-by-picture derivation hai.
- Data Representation — weighting jo Steps 2–3 mein use hua.
- Bitwise Operations — shift = power of two se divide karna, mask = mod, bytes extract karne ke liye use hua.
- Memory Addressing — byte-addressable boxes aur lowest-address ordering.
- Pointers and Type Punning — lowest address par ek byte padhna (detection trick).
- Network Protocols — big-endian multi-byte fields ke liye "network byte order" hai.