0 มีค่าสองค่าในส่วนเติมเต็มอย่างไร


12

ได้มีการกล่าวว่าในส่วนเติมเต็มของ 2 มีเพียงค่าเดียวในขณะที่ส่วนเสริมของ 1 ทั้ง +0 และ -0 มีค่าแยกกัน พวกเขาคืออะไร


8
0 ไม่มีสองค่า มันมีค่า 0 งวด สิ่งที่มันไม่ได้ใน 1 ส่วนเติมเต็มสองการแสดง แต่นั่นไม่ใช่สิ่งที่แปลกใหม่ ตัวอย่างเช่นหมายเลข 10 มีการแทนจำนวนมากในรูปทศนิยม: 10, +10, 010, +010, 0010, +0010, …และอื่น ๆ
Jörg W Mittag

เผง ค่าเป็นเพียงความเท่าเทียมกันในชั้นเรียนของการเป็นตัวแทนและสิ่งที่เรียกว่า“ค่า 0” เกิดขึ้นเป็นชั้นสมมูลมีทั้งและ000...0 111...1แต่การนำเสนอทั้งสองนี้ยังคงทำขึ้นเพียงค่าเดียว
leftaroundabout

คำตอบ:


19

ในส่วนที่1 ของคุณเพียงแค่สลับบิตทั้งหมด

ลองพิจารณาตัวอย่างทั้งสองนี้ (สมมติว่า 8 บิต):

  • - 4 = 111110114=00000100ดังนั้น4=11111011

  • - 0 = 111111110=00000000ดังนั้น111111110=11111111

ดังนั้นคุณมี 2 วิธีในการแทนค่าตัวเลข 0

ในส่วนเติมเต็ม 2คุณเพิ่ม 1 เข้ากับส่วนเติมเต็ม 1 แทนจำนวนลบ

  • 11111011 111111004ว่าในส่วนเสริมของ 1 คือกลายเป็น1111101111111100
  • 11111111 000000000ที่ส่วนเสริม 1 มีค่ากลายเป็นเหมือนกับ 01111111100000000

คุณมีทางเดียวที่จะแทนค่า 0 ในกรณีนี้

ดังที่คุณเห็นจากตัวอย่างความแตกต่างคือ:

  • ในส่วนเสริม 1 โดยมี 8 บิตคุณสามารถแสดงตัวเลขได้ตั้งแต่ถึง (จาก -127 ถึง 127)2 7 - 127+1271
  • ในส่วนเสริม 2 กับ 8 บิตคุณสามารถแสดงตัวเลขจากถึง (จาก -128 ถึง 127) ดังนั้นอีกหนึ่งหมายเลข 2 7 - 127271

7
มันอาจจะคุ้มค่าที่จะกล่าวถึงว่าส่วนประกอบของ 2 มีข้อได้เปรียบมากกว่าข้างเดียวอีกจำนวนหนึ่งในช่วงแม้ว่าคุณจะไม่ได้ลงรายละเอียดว่ามันคืออะไร
KRyan

7
อาจกล่าวถึงข้อดีข้อใดข้อหนึ่งที่กล่าวถึงในส่วนความคิดเห็นที่นี่: ข้อดีอย่างหนึ่งที่สำคัญคือการลบ (/ การเพิ่มจำนวนลบ) สามารถดำเนินการได้โดยทำท่าว่าตัวเลขจะไม่ได้ลงนามและเพิ่มเข้าไป ไม่มีกรณีพิเศษที่จำเป็นสำหรับการลบ = วงจรและตรรกะที่ง่ายกว่ามาก หน้านี้มีบทความดีๆเกี่ยวกับหัวข้อนั้น
Jason C

3

ในส่วนเติมเต็มของคนคุณลบล้างจำนวนโดยการพลิกบิตทั้งหมด ดังนั้นการลบศูนย์จะให้ผลลัพธ์ซึ่งหมายถึงซึ่งเป็นสิ่งเดียวกับศูนย์1 1 - 000110


คนงานเติมหรือลบประกอบกับการพกพาแบบ end-around แน่นอนสิ่งที่แสดงให้โปรแกรมเมอร์ไม่จำเป็นต้องเป็นตัวแทนพื้นฐาน
ttw

1
@ttw คำถามถามว่าการแสดงสองค่าของศูนย์คืออะไรดังนั้นฉันไม่แน่ใจว่าจะมีการบวกการลบและโปรแกรมเมอร์
David Richerby

3

การพูดถึงสองค่าที่ต่างกันของ 0 ในส่วนเสริมของคนหนึ่งคือการเข้าใจผิด หนึ่งของส่วนประกอบ (และเติมเต็มสอง) เป็นไบนารีการแสดงของตัวเลข พวกเขาอธิบายวิธีการแสดงตัวเลขในไบนารีและวิธีการดำเนินการทางคณิตศาสตร์กับพวกเขา จำนวนที่แสดงโดยลำดับของบิตคือค่า

เมื่อคุณมีค่าบางอย่างในส่วนเติมเต็มของตัวเองและต้องการหาตัวแทนของค่าที่มีเครื่องหมายพลิก - ผกผันเพิ่มเติม - คุณกลับทุกบิต ซึ่งรวมถึงการเป็นศูนย์ดังนั้นจึงเป็นตัวแทนและเป็นตัวแทนสำหรับ-0แต่ : การสลับเครื่องหมายบนไม่ได้ให้ค่าที่ต่างไป แต่ให้ค่าเท่าเดิม- 0 0 = - 0 0000=00

ที่ช่วยให้คุณทั้งสองเป็นตัวแทนสำหรับในส่วนประกอบหนึ่งของ: ลำดับบิตและลำดับบิต10 0 1 100011

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.