0'ın bir tamamlayıcısında nasıl iki değeri vardır?


12

2'nin tamamlayıcısında 0'ın sadece bir değere sahip olduğu, 1'in tamamlayıcısında ise hem +0 hem de -0'ın ayrı değerlere sahip olduğu söylenir. Onlar neler?


8
0'ın iki değeri yoktur. 0 değerine sahiptir. Ne gelmez 1'in tamamlayıcı sahip ikidir gösterimleri . Ama bu gerçekten benzersiz bir şey değil. Örneğin, 10 sayısının ondalık basamakta sonsuz sayıda gösterimi vardır: 10, +10, 010, +010, 0010, +0010,… vb.
Jörg W Mittag

Kesinlikle. Değerler sadece denklik sınıfları temsiller ve ne “değeri 0” denir hem içeren bir denklik sınıfı olur 000...0ve 111...1. Ancak bu iki temsil hala tek bir değer oluşturmaktadır.
leftaroundabout

Yanıtlar:


19

Gelen 1'ler tamamlayacak sadece tüm bit invert sizi.

Bu 2 örneği ele alalım (8 bit olduğu varsayılarak):

  • , yani - 4 = 111110114=000001004=11111011

  • , yani - 0 = 11111111 .0=000000000=11111111

Yani 0 sayısını temsil etmenin 2 yolu var

Gelen 2'nin tamamlayıcı negatif sayının 1'in tamamlayıcı gösterimi 1 eklenir

  • 1'in tamamlayıcı olduğunu 11.111.011 olur 1111110041111101111111100
  • 1'in tamamlayıcı olduğunu 11.111.111 olur 00000000 aynı 0 olarak01111111100000000

Yani bu durumda 0'ı temsil etmenin tek bir yolu var

Örneklerden de görebileceğiniz gibi fark şu:

  • 1'in tamamlayıcı, 8 bit ile sadece numaraları ifade edebilir için 2 7 - 1 (-127 ila 127 kadar)27+1271
  • 8 bit ile 2'nin belirtilen bütünleyici sen numaraları ifade edebilir için 2 7 - 1 (-128 ila 127), bir daha sayı yüzden27271

7
2'nin tamamlayıcısının, ne olduklarını ayrıntılara girmeseniz bile, aralıktaki bir sayıdan daha fazla avantajı olduğunu belirtmek gerekir .
KRyan

7
Buradaki yorum bölümünde bahsedilen avantajlardan birinden de bahsedilebilir: En büyük avantajlardan biri çıkarma (/ negatif sayıların eklenmesi) sadece sayıların imzasız olduğu ve eklenmesiyle yapılabilir. Çıkarma için özel durumlar gerekmez = çok daha basit devre ve mantık. Bu sayfanın bu konuda güzel bir yazısı var.
Jason C

3

00110


Olanlar toplama-çıkarma çalışmalarını uçtan uca taşıma ile tamamlar. Elbette, programcıya gösterilenin temel temsil olması gerekmez.
ttw

1
@ttw Soru, sıfırın iki temsilinin ne olduğunu sorar, bu yüzden toplama, çıkarma ve programcıların nerelere geldiğinden emin değilim.
David Richerby

3

Tamamlayıcısında 0'ın iki farklı değerinden bahsetmek yanıltıcıdır. Birinin kompleman (ve ikisinin kompleman) sayıların ikili temsilidir . İkili sayıları temsil etmenin bir yolunu ve bunlar üzerinde aritmetik işlemlerin nasıl yapılacağını açıklarlar. Bit dizisi ile temsil edilen sayı değerdir.

000=00

00011

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.