2012-05-18 17 views
5

MSDN: otuz ikinci bit, bir işaret biti olarak kullanılan ile.NET'in tamsayı, sadece iki tamamlama sistemine dayanıyor mu?

ınt32 değerleri, 31 bit olarak temsil edilir. Pozitif değerler, işaret ve büyüklük gösterimi kullanılarak temsil edilir. Negatif değerler, iki tamamlama temsilindedir.

o sign-and-magnitude system kullanarak pozitif değerlerin gösterimi two's complement system kullanılarak pozitif değerlerin temsil aynıdır doğru değil mi?

Yani olarak yeniden edilmiş olmamalıdır: "(bakılmaksızın pozitif ya da negatif) ikinin tamamlayıcı temsilinde temsil edilir Int32 değerler"

Ya ben bir şey yanlış anlama ben?

+0

Hayır, öyle düşünmüyorum ki, ikilinin tamamlayıcı temsilinin var olmasının tüm nedeni, negatif değerlerin üzerindeki temel işlemleri desteklemektir. 10000001 == -127, 00000001 == 1. pozitif int değerleri, iki tamamlayıcı sistemi kullanılarak temsil edilmez – Polity

+0

evet, pozitif sayıları düşündüğünüzde, en yüksek bitin "daha olumlu" anlamına gelmediğinin farkında olmalısınız. Herhangi bir sayıyı düşündüğünüzde, onu 2s tamamlayıcı bakış açısıyla değerlendirirsiniz ve pozitif veya negatif olarak çalışacaktır. –

cevap

6

Evet, haklısınız. 2s tamamlayıcı sistemi kullandığını ve daha sonra 31 bit kullanımıyla ilgili tanımını verdiklerini ve negatifleri "2s tamamlayıcısı" olarak açıklamaktan ziyade, negatifler için bit sunumunu açıkladıklarını söylemeliler. Ardından bitüm operatörleri hakkında uyarı verin.