การแทนจำนวนมีเครื่องหมาย

จากวิกิพีเดีย สารานุกรมเสรี

การแทนจำนวนมีเครื่องหมาย (อังกฤษ: Signed number representations) เป็นวิธีการแทนจำนวนที่อาจติดลบได้ในหน่วยความจำ เพื่อให้สะดวกต่อการนำมาดำเนินการต่าง ๆ และมีประสิทธิภาพ วิธีการโดยทั่วไปคือแบ่งพื้นที่ออกเป็นสองส่วน โดยในส่วนแรกนั้นจะเป็นส่วนที่เรียกว่า Magnitude หรือค่าขนาดของบิตตัวเลข มีตำแหน่งอยู่ที่สามนับจากขวา และส่วนที่สองจะเรียกว่า Signed Bit หรือค่าขนาดหนึ่งบิตแทนเครื่องหมายบวกหรือลบ หรือเรียกสั้นๆ ว่าบิตเครื่องหมาย โดยที่บิตเครื่องหมายนี้จะมีค่าเป็นบิตสูงสุด มีตำแหน่งอยู่หน้าสุด ดังนั้นในตัวเลขดิจิตอลหนึ่งตัวสามารถที่จะแทนได้ทั้งค่าบวก และค่าลบ ซึ่งถ้าบิตเครื่องหมายเป็น 0 ค่าของบิตสูงสุดจะมีค่าเป็นบวก แต่ถ้าบิตเครื่องหมายเป็น 1 ค่าของบิตสูงสุดจะมีค่าเป็นลบ ไม่ว่าบิตเครื่องหมายจะเป็น 0 หรือ 1 ก็ตามค่าขนาดของบิตจะเหมือนเดิม ดังตัวอย่างต่อไปนี้

ตัวอย่างที่ 1
  • +12 = 0000 1100
  • -12 = 1000 1100
ตัวอย่างที่ 2
  • +20 = 0001 0100
  • -20 = 1001 0100

จากตัวอย่างจะเป็นการแทนค่าตัวเลขดิจิตอลแบบ Sign-Magnitude System หลังจากที่ได้ดูตัวอย่างแล้วจะพบว่าความแตกต่างระหว่างบวกและลบ เช่น +12 และ -12 จะแตกต่างกันเพียงค่าของบิตเครื่องหมายเท่านั้น ส่วนค่าขนาดของบิตจะมีค่าเท่ากัน ถึงแม้ว่าระบบเลขดิจิตอลแบบนี้จะสามารถแทนค่าบวกและค่าลบได้ แต่ในการคำนวณของเครื่องคิดเลขจะไม่สามารถใช้คำนวณระบบนี้ได้

เนื้อหา

วิธีสร้างวงจรการคำนวณ [แก้]

เนื่องจากการสร้างวงจรการคำนวณจะมีความละเอียดซับซ้อนมากทำได้ยาก จึงสามารถทำวิธีอื่นได้อีกสองแบบ คือ แบบ 1’s Complement System และ 2’s Complement System

1’s Complement System [แก้]

เป็นการเปลี่ยนค่าสถานะของบิตเครื่องหมาย คือถ้าบิตเครื่องหมายเป็น 1 ให้เปลี่ยนเป็น 0 และถ้าบิตเครื่องหมายเป็น 0 ให้เปลี่ยนเป็น 1 โดยที่จะทำการเปลี่ยนสถานะทุกบิตกลับกันทั้งหมด ตามตัวอย่างต่อไปนี้

ตัวอย่างที่ 1
  • +12 = 0000 1100
  • -12 = 1111 0011 (1’s Complement)
ตัวอย่างที่ 2
  • +18 = 0001 0010
  • -18 = 1110 1101 (1’s Complement)


2’s Complement System [แก้]

คือผลบวกของ 1's Complement กับเลข 1 ทั้งนี้เพื่อประโยชน์สำหรับทำการลบเลข และเป็นการแสดงค่าเลขที่เป็นค่าลบในระบบ Computer ระบบ 2’s Complement นั้นเป็นรหัสที่ใช้แทนเลขฐานสองแบบบวกและแบบลบ ในระบบ Signed Binary Number หรือระบบตัวเลขฐานสองแบบคิดเครื่องหมาย หรือ ระบบ 2’s Complement สามารถทำได้โดยถ้าเป็นเลขบวกไม่ต้องเปลี่ยนค่าสถานะของบิตเครื่องหมาย แต่ถ้าเป็นเลขลบ ให้ทำการกลับค่าโดยการ 1’s Complement ทุกบิต และบวก 1 เสมอตามตัวอย่าง ดังนี้

ตัวอย่างที่ 1
  • +12 = 0000 1100
  • -12 = 1111 0011 (1’s Complement)
  • 1111 0011 + 1
    • -12 = 1111 0100 (2’s Complement)
ตัวอย่างที่ 2
  • +16 = 0001 0000
  • -16 = 1110 1111 (1’s Complement)
  • 1110 1111 + 1
    • -16 = 1111 0000 (2’s Complement)

Possible Number Representations [แก้]

4 bit signed magnitude

Decimal number Bit pattern
1111 -7
1110 -6
1101 -5
1100 -4
1011 -3
1010 -2
1001 -1
1000 -0
0000 +0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1’s Complement
  • +1 = 001
  • -1 = 110
  • +2 = 010
  • -2 = 101
  • +3 = 011
  • -3 = 100
  • +12 = 1100
  • -12 = 0011
  • +13 = 1101
  • -13 = 0010
2’s Complement
  • +1 = 001
  • -1 = 111
  • +2 = 010
  • -2 = 110
  • +3 = 011
  • -3 = 101
  • +12 = 1100
  • -12 = 0100
  • +13 = 1101
  • -13 = 0011