สรุปเน้นจุดที่จดไว้ + ห้องแล็บจำลองหน่วยความจำ — กดดูทีละ step ว่าคอมพิวเตอร์วางข้อมูลลงหน่วยความจำยังไง แล้วสูตรมันมาจากไหน
| 1 มิติ Base(a) + (i + eSize) | ✅ Base(a) + (i × eSize) |
| 2 มิติ Row major | ✅ Base(a) + ((i×C) + j) × eSize — ถูกแล้ว |
| 2 มิติ Column major | ✅ Base(a) + (i + (j×R)) × eSize — ถูกแล้ว |
| "Physical และ Logic" | ✅ ถูก — เขียนเต็มว่า Physical / Logical |
จุดที่จดไว้: “มี Physical และ Logic” — นี่คือแกนที่ทำให้ทั้งบทนี้มีเหตุผล · ทุกอย่างข้างล่างมีรูปให้ดูหมด
int x = 65; → 4 ไบต์ · ค่า 65 = 41₁₆float f = 100.0; → 4 ไบต์ (เก็บแบบ IEEE 754)char c = 'A'; → 1 ไบต์ · รหัส ASCII 65emp.age'\0' — char ch[9] เก็บได้ 8 ตัวอักษรeSize ← นี่คือเหตุผลที่คำนวณตำแหน่งได้ด้วยการคูณchar charlist[50]; → Base = อักขระ, Index = จำนวนเต็ม 0–49สไลด์หน้า 17 เขียนไว้ว่า “ถ้าเลขที่หน่วยความจำเป็นเลขในฐานอื่น เมื่อทำการคำนวณหาตำแหน่งต้องทำการบวกตามฐานของเลขนั้นๆ” — นี่คือจุดที่ข้อสอบชอบเอามาผสมกับสูตร array
11111111₂ = FF₁₆ = 255₁₀0x7FFD3A2C ไม่ใช่ 5000500016 หรือ (5000)₁₆ หรือ 5000H — ทั้งหมดหมายถึงฐาน 161010 1111₂ → A F → AF₁₆010 101 111₂ → 2 5 7 → 257₈10111₂ → 0001 0111 → 17₁₆5000₁₆ + 12₁₆ → หลักขวา 0+2=2 · หลักถัดมา 0+1=1 · ที่เหลือลงมาตรง → 5012₁₆ตำแหน่งแรก = Base Address · ทุกช่องกว้างเท่ากัน → เลื่อนไป i ช่อง = บวก i×eSize
a[0] → Base(a) · a[1] → Base(a) + 1×eSize · a[i] → Base(a) + i×eSizea[i] เป็นแค่ “สูตรกระโดด” ที่คอมไพเลอร์แปลงเป็นที่อยู่ตอนรันส่วนที่ออกสอบแน่นอนที่สุด · กด ▶ เล่นทีละ step เพื่อดูว่าคอมพิวเตอร์ยัดตารางลงเส้นตรงยังไง
C = จำนวนคอลัมน์ = U2 + 1R = จำนวนแถว = U1 + 1R − 1 (เพราะ C เริ่มนับที่ 0)C − 1int = 2 หรือ 4int a[3][6]; Base(a) = 2000₁₆ · eSize = 2 · หา a[1][2]0 ถึง (R×C − 1) × eSize → ที่นี่คือ 0 ถึง (18−1)×2 = 34 · ได้ 16 กับ 14 ✓ ผ่าน0 … (R×C−1)×eSize ถ้าเกิน = ผิดแน่Base + ((i×C×D)+(j×D)+k)×eSize) และสไลด์หน้า 40 อาจารย์เขียนหัวข้อ “Update for Array 3D” ทิ้งไว้ว่างเปล่าเป้าหมาย: ตอบถูกภายใน 2 นาที/ข้อ โดยไม่เปิดสูตร
0-9 A-F + − * / Enter=เท่ากับ Backspace Esc=ปิด