Shuru karne se pehle, ek reminder us single formula ka jis par poora page tika hua hai. Ek N-byte value V ke liye, uske bytes ko k=0 se number karo jahan k=0 least significant byte (LSB) hai. Tab
bk=⌊256kV⌋mod256
256k=28k low k bytes ko raste se shift out karta hai (har byte 8 bits ka hota hai).
mod256 baaki sab kuch mask karke sirf sabse neeche wala byte bachata hai.
Aur base address A, offset i par memory mein placement:
Little-endian: mem[A+i]=bi (LSB jaata hai lowest address par)
Big-endian: mem[A+i]=bN−1−i (MSB jaata hai lowest address par)
Neeche diya reference figure har problem ke liye mental picture hai: addresses A+0…A+3 par chaar mailboxes, aur unhe bharne ke do rules.
HUM KYA CHECK KARTE HAIN: kya lowest address wala byte value ke most significant byte se match karta hai ya least significant byte se?
Value ka MSB hai 0xAA (sabse baaya pair, weight 224). Lowest address par AA hai.
MSB at lowest address ⇒ big-endian ("Big end → Beginning").
Recall Solution 1.2
Lowest address par DD hai, jo LSB hai (weight 20). LSB at lowest address ⇒ little-endian.
Recall Solution 1.3
Big-endian. Dekho Network Protocols — isi liye htonl/ntohl exist karte hain: yeh host ke order aur is agreed big-endian wire order ke beech convert karte hain.
Bytes extract karo (k=0 is LSB): b0=EF,b1=BE,b2=AD,b3=DE.
Kyun:bk=⌊V/256k⌋mod256; e.g. b1=⌊V/256⌋mod256=BE.
Place karo little-endian (mem[200+i]=bi):
200:EF 201:BE 202:AD 203:DE.
Recall Solution 2.2
Big-endian index ko reverse karta hai: mem[200+i]=b3−i.
200:DE 201:AD 202:BE 203:EF.
Check: sabse bada byte (DE) sabse chhote address par pada — "Big end first" se match karta hai.
Recall Solution 2.3
Bytes: b0=FF (LSB), b1=00 (MSB).
Little-endian (mem[10+i]=bi): 10:FF 11:00.
Big-endian (mem[10+i]=b1−i): 10:00 11:FF.
N kyun matter karta hai: big-endian index N−1−i hota hai, isliye reversal ki length value ki width par depend karti hai.
Little-endian bytes: 0:09 1:00 2:00 3:00. Address 0 par ek byte = 0x09 = 9 — sahi low-order value, widening "free" hai.
Big-endian bytes: 0:00 1:00 2:00 3:09. Address 0 par ek byte = 0x00 = 0 — galat; 9 address 3 par hai.
Kyun: little-endian low-order data ko low addresses par rakhta hai, isliye narrow reads directly kaam karte hain (dekho Memory Addressing).
Recall Solution 4.2
x=1 ke bytes hain b0=01, b1=b2=b3=00.
Little-endian: lowest address par b0=01 hai ⇒ b == 1.
Big-endian: lowest address par MSB b3=00 hai ⇒ b == 0.
Single nonzero byte ki location convention reveal karti hai.
Recall Solution 4.3
V=(0x12≪24)∣(0x34≪16)∣(0x56≪8)∣0x78.
Equivalently V=0x12⋅224+0x34⋅216+0x56⋅28+0x78.
Yeh endianness se independent hai: shifts value (abstract number) par operate karte hain, kabhi memory addresses par nahi. Endianness tabhi aati hai jab woh value bytes mein lay out hoti hai. Dekho Data Representation.
char[] ek array of single bytes hai, koi ek multi-byte scalar nahi, isliye endianness ise bilkul touch nahi karti.
Dono machines: 0:48 ('H') 1:69 ('i') 2:00 (NUL).
Endianness bytes ko ek wide integer ke andar reorder karti hai; array element order array ke khud se fix hoti hai.
Recall Solution 5.2
Intended (big-endian reader): offset 0 MSB hai ⇒ V=01⋅256+00=0x0100=256.
Little-endian host, bina conversion ke: offset 0 ko LSB maanta hai ⇒ V=01+00⋅256=0x0001=1.
Woh 1 padhta hai 256 ki jagah — ek byte-swap ka fark. Sahi handling: ntohs wapas swap karta hai. Yahi everyday reason hai ki network code explicitly convert karta hai.
Recall Solution 5.3
Store: mem[i]=bi=⌊V/256i⌋mod256.
Har offset ko 256i se weight karke wapas padho:
V′=∑i=0N−1mem[i]⋅256i=∑i=0N−1bi⋅256i.
Lekin ∑ibi⋅256i bilkul V ka base-256 expansion hai, isliye V′=V. Convention lossless hai jab tak write rule = read rule ho. (Yahi big-endian par bhi laagu hota hai 256N−1−i ke saath.)