การคำนวณเลขฐานสอง
แนะนำใหม่| English | ความหมาย |
|---|---|
| register/ˈredʒɪstə/ | รีจิสเตอร์ |
| overflow/ˌəʊvəˈfləʊ/ | การล้นของข้อมูล |
| two's complement/tuːz ˈkɒmplɪmənt/ | สองส่วนเติมเต็ม |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | การเลื่อนลอจิก |
| most significant bit/məʊst sɪɡˈnɪfɪkənt bɪt/ | บิตที่มีนัยสำคัญสูงสุด |
การคำนวณทางคณิตศาสตร์ด้วย 1 และ 0
- คอมพิวเตอร์บวก เลื่อนตำแหน่ง และจัดเก็บตัวเลขลบ — ทั้งหมดทำในรูป binary
- รีจิสเตอร์ขนาด 8 บิตมีขีดจำกัด ดังนั้นผลลัพธ์อาจเกิด overflow ได้
- Two's complement ช่วยให้เราจัดเก็บตัวเลขลบได้
การบวกเลขฐานสองและการเกิด overflow
- เพิ่มหลักตามหลักโดยเริ่มจากขวา โดยถ่วง 1: $1+1 = 10$ (เขียน 0, ถ่วง 1)
- ตัวอย่าง:
01110110(118) +00110000(48) =10100110(166) - รีจิสเตอร์ 8 บิตเก็บได้ 0–255 ผลลัพธ์ที่เกิน 255 ต้องใช้บิตที่ 9 ซึ่งไม่เข้าในรีจิสเตอร์ — นี่คือ overflow และคำตอบที่บันทึกไว้จะผิด

ตารางตำแหน่งค่าของรีจิสเตอร์ 8 บิต. ตัวเลข 1 อยู่ใต้ค่าที่รวมกันได้ 150 (128 + 16 + 4 + 2).
การคำนวณเลขฐานสอง
byte = ผลรวมของค่าตำแหน่ง
ดูว่ารูปแบบ 8 บิตจัดเก็บตัวเลขจาก 0 ถึง 255 ได้อย่างไร
บวกเลขฐานสอง 0101 + 0011 ให้ผลลัพธ์เป็น 4 บิต
Difficulty 1/5 · 100 coins + a small bonus on first completion today
5 + 3 = 8 = 1000.
Overflow ในรีจิสเตอร์ 8 บิตเกิดขึ้นเมื่อ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
รีจิสเตอร์ 8 บิตเก็บ 0–255; ผลลัพธ์ที่ใหญ่กว่าต้องการบิตที่ 9 ซึ่งไม่พอดี จึงสูญเสียไป
การเลื่อนตำแหน่งแบบตรรกะในเลขฐานสอง
- การเลื่อนตรรกะ จะย้ายบิตทั้งหมดไปทางซ้ายหรือขวา บิตที่หลุดออกจะ หายไป และ ศูนย์ จะเติมช่องว่าง
- การเลื่อนไปทางซ้าย คูณด้วย 2 ต่อตำแหน่ง; การเลื่อนไปทางขวา หารด้วย 2 ต่อตำแหน่ง
- ตัวอย่าง:
00110101(53) เลื่อนไปทางซ้าย 2 ตำแหน่ง →11010100(212) = $53 \times 4$

แต่ละหลักเลขฐานสิบหกจะกลายเป็นกลุ่ม 4 บิตของตัวเอง (nibble): F = 1111, 0 = 0000, 8 = 1000.
การเลื่อนทางตรรกะไปทางซ้าย 1 ตำแหน่งคูณจำนวนที่ไม่เป็นลบด้วยอะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
การเลื่อนไปทางซ้ายแต่ละตำแหน่งคูณด้วย 2 (การเลื่อนไปทางขวาหารด้วย 2)
00110101 มีค่า 53 หลังการเลื่อนทางตรรกะไปทางซ้าย 2 ตำแหน่ง จะมีค่าเลขฐานสิบเท่าใด?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
เลื่อนไปทางซ้าย 2 = ×4: 53 × 4 = 212 (11010100)
Two's complement (ตัวเลขลบ)
- ใน two's complement บิตที่มีนัยสำคัญที่สุด (MSB) จะมีค่า ลบ:
-128 64 32 16 8 4 2 1 - MSB 0 → บวก; MSB 1 → ลบ
- เพื่อทำให้ตัวเลขเป็นลบ: เขียนเลขบวกก่อน แล้ว สลับทุกบิต, จากนั้น เพิ่ม 1 เช่น $+40$ =
00101000→ สลับ11010111→ +1 →11011000= $-40$ - ช่วงของ two's complement ขนาด 8 บิต: −128 ถึง +127

บิตที่มีนัยสำคัญที่สุดมีค่า −128 ดังนั้น 11011000 = −128 + 64 + 16 + 8 = −40
ค่าที่ต่ำที่สุดที่เป็นลบที่เลขฐานสองแบบ Two's Complement 8 บิตสามารถจัดเก็บได้คืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
MSB มีค่านิยาม −128 ดังนั้นช่วงคือ −128 ถึง +127
คุณเข้าใจแล้ว
- บวกเลขฐานสองด้วยการยก; overflow = ผลลัพธ์ต้องใช้บิตที่ 9 ซึ่งรีจิสเตอร์ 8 บิตไม่สามารถเก็บได้ (0–255)
- logical shift: เลื่อนซ้าย = ×2, เลื่อนขวา = ÷2 ต่อตำแหน่ง; บิตที่หลุดออกจะถูกทิ้ง
- two's complement: MSB มีค่า −128; สลับบิตและเพิ่ม 1 เพื่อเปลี่ยนเครื่องหมาย; ช่วง −128 ถึง +127