Is page pe assume kiya gaya hai ki tumne pehle kuch nahi dekha. Hum har woh symbol build karenge jo parent note Instruction formats and encoding mein use hota hai — ek ek karke, har ek ko ek picture se anchor karke, har ek ko use karne se pehle earn karke. Yahan kuch bhi memorise nahi karna; sab kuch derive hota hai.
Figure s01 neeche aath bulbs ki ek row draw karta hai: jale hue bulbs (butter-yellow) 1 hain, dim grey bulbs 0 hain. Sabse baayi taraf ka bulb dekho — woh ek bit hai, aur chhota arrow us par point karta hai. Neeche ki green line saare aath bulbs ko bracket karti hai; us grouping ko hum abhi ek second mein byte kahenge.
Agar ek bit 2 possibilities hold karta hai, toh b bits ka ek group kitna hold karta hai?
Ek bit add karo → har purana pattern ab 0 ya 1 mein end ho sakta hai → patterns ki sankhya double ho jaati hai. Toh:
1 bit → 2 patterns
2 bits → 4 patterns
3 bits → 8 patterns
b bits → 2b patterns.
Figure s02 isko ek bar chart mein dikhata hai: har bar pichle se do ke factor se ooncha hai, aur bars ke beech coral arrows kehte hain "×2 again". Woh visual doubling hi2b ka matlab hai.
Parent note likhta hai b=⌈log2N⌉. Chaliye har symbol earn karte hain.
Woh sawaal jo hum actually pooch rahe hain: "Mere paas N alag cheezein hain (maan lo 32 registers). Mujhe kitne bits b chahiye taaki 2b kam se kam N ho?"
Lekinlog2100=6.64… — tum 6.64 switches nahi rakh sakte. Bits poore hote hain, aur 6 bits (=64 patterns) kaafi nahi hain. Hum round up karke 7 karna chahenge.
Figure s03 ek line par 25=32, 26=64, 27=128 rakhta hai aur "need 100" par ek coral marker drop karta hai. Tum dekh sakte ho 64 marker ke left mein baithta hai (too few) aur 128 right mein (fits), toh jawab 6.64 se round up karke 7 hona chahiye.
Fields name karne se pehle hum agree karna chahte hain ki bit positions kaise count karein — warna "bits 0 through 6" ambiguous hai.
Figure s04 32-bit word ko chhah rounded, pastel boxes ke roop mein draw karta hai. Neeche ke labels dekho: "high bits (left)" aur "bit 0 (right)" — yahi hamari convention visible ho rahi hai. Coral opcode box far right mein baithta hai (bits 0–6); arrow yaad dilata hai ki decoder pehle wahan dekhta hai.
Do field-names jinpe parent lean karta hai:
opcode — "kya kaam" field (add? jump? load?). Hamesha same position mein taaki decoder pehle ise dhundh sake.
operand fields — "kya usse karna hai": register numbers, ya ek immediate.
addi x1, x2, -8 kaam karna chahiye, isliye ek field ko ek negative number mean karne mein capable hona chahiye.
Section 1 ke positional weights se build karte hain. Ek unsignedb-bit number mein har bit ka weight +2i hota hai. Two's complement exactly ek cheez change karta hai: top bit ka weight negative ho jaata hai, −2b−1, jabki har lower bit apna usual +2i rakhta hai.
4 bits pe dekho (b=4, toh top weight −23=−8 hai):
1000=−8,1111=−8+4+2+1=−1,0111=4+2+1=+7.
Range phir weights se sidha nikalta hai. Most negative value sirf top bit on karti hai: 1000…0=−2b−1. Most positive top bit chhor ke har bit on karta hai: 0111…1=2b−1−1. Toh:
range=−2b−1to2b−1−1.
Parent ke 12-bit immediate ke liye: −211 to 211−1=−2048 to +2047. Full treatment ke liye Two's Complement and Sign Extension dekho.
7,5,5,3,5,7 bits mein field widths hain (Section 3).
Har 5 aaya ⌈log232⌉ se (Sections 2 & 4).
Sum exactly 32 hona woh fixed budget hai jis par parent bar bar stress karta hai.
Related building topics jinpe tum ab approach kar sakte ho: Addressing Modes (operand fields memory kaise name karte hain), RISC vs CISC (fixed vs variable width philosophy), Pipelining (kyun fast fixed decode matter karta hai).