2012-03-02 15 views

cevap

5

Numara, matematik yapmak için daha anlamlı hale getirilecek şekilde imzalanmıştır. Adres 123'ü 456'dan çıkarırsanız, 333 adresini almayı beklersiniz, değil mi? Yani 123'ten 123'ü çıkarırsanız, 18.344.744.073,709.551,283 değil, -333 olmasını beklersiniz, değil mi? Bu yüzden adresler imzalandı.

Yalnızca yüksek bölümün imzalanmasının nedeni, bir sayının yalnızca bir işaret biti içermesi ve her zaman en yüksek (en anlamlı) bit olmasıdır.

+0

'LowPart' ve' HighPart', 64 bit adresin iki yarısıdır. 64-bit imzalı bir tamsayı olarak ele alınıyor, sadece bir işaret biti var, ve yüksek kısımda. Uygulamada, tam 64 bit adres alanının yalnızca küçük bir kısmı (16 exabayt) kullanıma sunulacak. \ –

+0

Adres alanının yarısı negatif ... bu yüzden boşa harcanıyorlar mı? Sonuçların pozitif olmasını sağlamak için çıkarma işleminden önce hangi işlenenin daha büyük olduğunu kontrol etmeyelim? Tek neden aritmetik mi? – solotim

+0

@solotim: "Negatif" olanlar boşa harcanmaz. CPU, işaretçinin "negatif" olması umurunda değil - sadece yüksek bitin ayarlandığını görür. – Gabe

İlgili konular