เรียนรู้ ระบบเลข ตั้งแต่ต้น
1ระบบจำนวนคืออะไร
ในชีวิตประจำวันคุณนับเป็นฐานสิบ มีสิบหลัก คือ 0 ถึง 9 และทุกหลักมีค่าเป็นสิบเท่าของหลักทางขวา
ใน 352 เลข 3 มีค่า 300 เลข 5 มีค่า 50 และเลข 2 มีค่า 2 หลักมีค่า 1, 10, 100 จากทางขวา
352 = 3 · 100 + 5 · 10 + 2 · 1
คอมพิวเตอร์เก็บทุกอย่างเป็นสวิตช์ที่เปิดหรือปิด จึงนับเป็นฐานสอง ใช้เพียงเลข 0 และ 1
เลขฐานสองหนึ่งหลักคือบิต กลุ่ม 8 บิตคือไบต์
กฎเหมือนกันในทุกฐาน: แต่ละหลักมีค่าเท่ากับค่าของมันคูณกำลังของฐาน
ตรวจสอบตนเอง ในเลขฐานสิบ 4721 เลข 7 มีค่าเท่าใด
- 7000
- 700
- 70
- 7
คำตอบ: 700. นับจากทางขวา หลักมีค่า 1, 10, 100 และ 1000 เลข 7 อยู่ในหลักที่สาม จึงมีค่า 7 · 100 = 700
2ฐานสองและฐานสิบหก
ในฐานสอง หลักมีค่า 1, 2, 4, 8, 16 และต่อไป จากทางขวา แต่ละหลักมีค่าเป็นสองเท่าของหลักทางขวา
สำหรับเลข 8 บิต หลักมีค่า 128, 64, 32, 16, 8, 4, 2 และ 1
เพื่ออ่านเลขฐานสอง ให้บวกค่าหลักของทุกบิตที่เป็น 1 สำหรับ 0011 0010 คือ 32 + 16 + 2 = 50
แถวบิตยาว ๆ อ่านยาก โปรแกรมเมอร์จึงมักเขียนเป็นเลขฐานสิบหก (hex) ฐาน 16 แทน
เลขฐานสิบหกต้องใช้ 16 หลัก ใช้ 0 ถึง 9 แล้วตามด้วยตัวอักษร A = 10, B = 11, C = 12, D = 13, E = 14 และ F = 15
หลักฐานสิบหกมีค่า 1, 16, 256 และ 4096 จากทางขวา เลขฐานสิบหกมักเขียนโดยมี 0x นำหน้า เช่น 0x2F
เลขฐานสิบหกหนึ่งหลักเท่ากับ 4 บิตพอดี ดังนั้น 0011 0010 คือ 0x32: 0011 คือ 3 และ 0010 คือ 2
ตรวจสอบตนเอง 0x1A เป็นเลขฐานสิบเท่าใด
- 110
- 11
- 161
- 26
คำตอบ: 26. A = 10 หลักคือ 16 และ 1 ดังนั้น 1 · 16 + 10 · 1 = 26 การเขียนเลขต่อกัน (110) หรือบวกกัน (11) ละเลยค่าหลัก 161 ใช้หลักผิดลำดับ
3จำนวนลบ: ทูส์คอมพลีเมนต์
ไบต์ที่ทุกหลักเป็นบวกเก็บได้ 0 ถึง 255 เรียกว่าไม่มีเครื่องหมาย
เพื่อเก็บจำนวนลบ คอมพิวเตอร์ใช้ทูส์คอมพลีเมนต์ สิ่งเดียวที่เปลี่ยนคือบิตซ้ายสุดมีค่า −128 แทน +128
ดังนั้น 1000 0011 คือ −128 + 2 + 1 = −125 บิตซ้ายสุดเรียกว่าบิตเครื่องหมาย: เมื่อเป็น 1 จำนวนนั้นเป็นลบ
ทูส์คอมพลีเมนต์ 8 บิตมีช่วงจาก −128 (1000 0000) ถึง +127 (0111 1111)
เพื่อเขียนจำนวนลบ −x ให้เริ่มจาก +x ในฐานสอง กลับทุกบิต (0 เป็น 1, 1 เป็น 0) และบวก 1
ตัวอย่างสำหรับ −5: 5 คือ 0000 0101 เมื่อกลับบิตเป็น 1111 1010 บวก 1 ได้ 1111 1011
รูปแบบเดียวกันเมื่ออ่านเป็นไม่มีเครื่องหมายมีค่า 256 − x สำหรับ −5 คือ 251 และ 1111 1011 คือ 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251 จริง
ตรวจสอบตนเอง รูปแบบ 8 บิต 1111 1111 เก็บจำนวนทูส์คอมพลีเมนต์ ค่าของมันคือเท่าใด
- 255
- −127
- −128
- −1
คำตอบ: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1 255 คือการอ่านแบบไม่มีเครื่องหมาย −127 มาจากการถือบิตแรกเป็นเครื่องหมายลบหน้า 111 1111
4วิธีทำทีละขั้น
ฐานสองหรือฐานสิบหกเป็นฐานสิบ:
- เขียนค่าหลักใต้ทุกหลัก: กำลังของ 2 สำหรับฐานสอง กำลังของ 16 สำหรับฐานสิบหก เริ่มด้วย 1 ทางขวา
- ในฐานสิบหก แทนแต่ละตัวอักษรด้วยค่าของมัน: A = 10 ถึง F = 15
- คูณแต่ละหลักด้วยค่าหลักของมันแล้วบวกทั้งหมด
ทูส์คอมพลีเมนต์:
- เพื่ออ่านรูปแบบ ให้บิตซ้ายสุดมีค่า −128 (ใน 8 บิต) และบวกค่าหลักของทุกบิต 1
- เพื่อเขียน −x ให้เขียน +x ใน 8 บิต กลับทุกบิต และบวก 1
- ค่าแบบไม่มีเครื่องหมายของรูปแบบนั้นคือ 256 − x ใช้ตรวจสอบบิตของคุณ
บิต ช่วง และหน่วยความจำ:
- n บิตให้ 2ⁿ รูปแบบที่ต่างกัน
- แบบไม่มีเครื่องหมายเก็บ 0 ถึง 2ⁿ − 1 ในทูส์คอมพลีเมนต์เก็บ −2ⁿ⁻¹ ถึง 2ⁿ⁻¹ − 1
- เพื่อให้ k รายการมีรหัสของตัวเอง ให้หา b ที่น้อยที่สุดที่ 2b ≥ k
- สำหรับหน่วยความจำ ให้คูณจำนวนรายการด้วยบิตต่อรายการ แล้วหารด้วย 8 เป็นไบต์ และหารด้วย 1024 เป็น KiB
M = ความกว้าง × ความสูง × บิตต่อพิกเซล / 8 / 1024 (KiB)
5ตัวอย่างที่แก้ให้ดู
ทำตามทุกขั้นตอน ลองทำนายขั้นถัดไปก่อนเปิดดู
ตัวอย่างที่แก้ให้ดูรูปแบบ 8 บิต 1011 0110 เก็บจำนวนเต็มมีเครื่องหมายแบบทูส์คอมพลีเมนต์ ค่า N ของมันในฐานสิบคือเท่าใด
1ในทูส์คอมพลีเมนต์ หลักซ้ายสุดมีค่า −128 หลักอื่นคือ 64, 32, 16, 8, 4, 2 และ 1
2บิตซ้ายสุดเป็น 1 จำนวนนี้จึงเป็นลบ
3บิต 1 อยู่ในหลัก −128, 32, 16, 4 และ 2
N = −128 + 32 + 16 + 4 + 2 = −74
4อ่านเป็นแบบไม่มีเครื่องหมาย รูปแบบนี้คือ 128 + 32 + 16 + 4 + 2 = 182
สำหรับจำนวนลบ ค่าแบบไม่มีเครื่องหมายคือ 256 − x ดังนั้น x = 256 − 182 = 74 ซึ่งให้ N = −74 อีกครั้ง
5กลับ 1011 0110 ได้ 0100 1001 แล้วบวก 1 ได้ 0100 1010
0100 1010 คือ 64 + 8 + 2 = 74 ดังนั้นรูปแบบเดิมคือ −74
6ข้อผิดพลาดที่พบบ่อย
- ลืมบวก 1 หลังกลับบิต คุณจะได้ค่าต่ำไปหนึ่ง
- อ่านรูปแบบทูส์คอมพลีเมนต์เป็นแบบไม่มีเครื่องหมาย เช่น 1111 1111 เป็น 255 แทนที่จะเป็น −1
- ถือบิตเครื่องหมายเป็นเครื่องหมายลบหน้าบิตอื่น ในทูส์คอมพลีเมนต์มันมีค่า −128
- ใส่หลักผิดลำดับ หลักที่มีค่า 1 อยู่ทางขวาเสมอ
- ใช้ A = 11 ในฐานสิบหก ตัวอักษรเริ่มที่ A = 10
- ปนบิตกับไบต์ในโจทย์หน่วยความจำ ให้หารจำนวนบิตด้วย 8
ตรวจสอบตนเอง −5 เป็นรูปแบบทูส์คอมพลีเมนต์ 8 บิตคืออะไร
- 0000 0101
- 1000 0101
- 1111 1010
- 1111 1011
คำตอบ: 1111 1011. 5 คือ 0000 0101 เมื่อกลับบิตได้ 1111 1010 และบวก 1 ได้ 1111 1011 1111 1010 ลืมบวก 1 และ 1000 0101 ใส่เครื่องหมายลบหน้า 5
7ข้อสอบมีหน้าตาอย่างไร
- ง่าย: ฐานสองและฐานสิบหกเป็นฐานสิบ แปลงเลขฐานสอง 8 บิตหรือเลขฐานสิบหก 3 หลักเป็นฐานสิบ
- ปานกลาง: ส่วนประกอบสองของเลขฐานสอง (two’s complement) อ่านค่าของแบบรูปบิตแบบมีเครื่องหมาย 8 บิต หรือเขียนเลขลบเป็นแบบรูปบิตแล้วบอกค่าแบบไม่มีเครื่องหมาย
- ยาก: บิต ช่วงค่า และหน่วยความจำ ค่ามากที่สุดหรือค่าลบมากที่สุดที่เก็บได้ใน n บิต จำนวนบิตที่ต้องใช้สำหรับ k รหัส หรือหน่วยความจำที่รูปภาพใช้
ตัวอย่างคำถามระดับยาก: รูปภาพขนาด 256 × 256 พิกเซล พิกเซลละ 24 บิต ใช้หน่วยความจำ 256 · 256 · 24 / 8 / 1024 = 192 KiB
ตรวจสอบตนเอง ต้องใช้อย่างน้อยกี่บิตจึงจะให้รายการ 375 รายการมีรหัสเป็นของตนเอง
- 188
- 512
- 8
- 9
คำตอบ: 9. 2⁸ = 256 รหัสน้อยเกินไป 2⁹ = 512 เพียงพอ จึงต้องใช้ 9 บิต ส่วน 512 คือจำนวนรหัส ไม่ใช่จำนวนบิต
เรียนรู้ทีละขั้นในแอปเรียนรู้ทีละขั้นในแอป