1.รหัสต้นฉบับ
บิตสูงสุดจะถูกใช้เป็นบิตเครื่องหมาย (0 หมายถึงค่าบวก, 1 หมายถึงค่าลบ) และบิตที่เหลือแสดงถึงค่าสัมบูรณ์ของค่านั้นเอง (แสดงในรูปแบบไบนารี)
เพื่อความง่าย เราใช้ 1 ไบต์เพื่อแสดงจำนวนเต็ม
รหัสเดิมของ +7 คือ: 00000111
รหัสดั้งเดิมของ -7 คือ: 10000111
2.รหัสย้อนกลับ
ถ้าตัวเลขเป็นบวก ส่วนเสริมจะเหมือนกับโค้ดต้นฉบับ ถ้าตัวเลขเป็นลบ บิตเครื่องหมายจะเป็น 1 และบิตที่เหลือคือการกลับกันของโค้ดต้นฉบับ
เพื่อความง่าย เราใช้ 1 ไบต์เพื่อแสดงจำนวนเต็ม:
ส่วนเสริมของ +7 คือ: 00000111
ส่วนเสริมของ -7 คือ: 11111000
3. รหัสเสริม
รหัสเสริม: ถ้าตัวเลขเป็นบวก รหัสเดิม รหัสเสริม และส่วนเสริมจะเหมือนกัน หากตัวเลขเป็นลบ บิตเครื่องหมายจะเป็น 1 และบิตที่เหลือคือการกลับกันของรหัสต้นฉบับ จากนั้นทั้งหมด จำนวนบวกด้วย 1 เพื่อความง่าย เราใช้ 1 ไบต์เพื่อแสดงจำนวนเต็ม:
ส่วนเสริมของ +7 คือ: 00000111
ส่วนเสริมของ -7 คือ: 11111001
เมื่อพิจารณาส่วนเสริมของจำนวนลบแล้ว ให้แปลงเป็นเลขฐานสิบ
1. ก่อนอื่น ฉันจะโต้แย้งคุณ
2. แปลงเป็นเลขทศนิยม
3. เพิ่มเครื่องหมายลบแล้วลบ 1
ตัวอย่างเช่น:
11111010 บิตสูงสุดคือ 1 ซึ่งเป็นจำนวนลบ ขั้นแรกลบล้างแต่ละบิตเพื่อให้ได้ 00000101 แปลงเป็นเลขฐานสิบเพื่อให้ได้ 5 เพิ่มเครื่องหมายลบเพื่อให้ได้ -5 แล้วลบ 1 เพื่อให้ได้ -6
เหตุใดจึงเป็นจำนวนลบเมื่อฉันแปลง int a=232; เป็นประเภทไบต์ - -