Mantık devreleri ve ikilik taban

Hsn69

Decapat
Katılım
4 Ağustos 2021
Mesajlar
30
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar selamlar
Mantık devrelerinde programlama ile ilgili sayılabilecek bir noktada tıkandım. Örneğin 10011001 sayısı işaretli ise -25 işaretsiz ise 153 sayısına denk geliyor. Takıldığım nokta şu biz bu sayının işaretliyi mi yoksa normal binary sayıyı mı kastettiğini nerden anlayacağız? Sorulan sorularda bu bize söylenmek zorunda mı?
 
Anlayamazsın. İşaretli bir sayı da olabilir işaretsiz bir sayı da. Soruda sayıyı nasıl yorumlayacağın verilmeli.
 
Arkadaşlar selamlar
Mantık devrelerinde programlama ile ilgili sayılabilecek bir noktada tıkandım. Örneğin 10011001 sayısı işaretli ise -25 işaretsiz ise 153 sayısına denk geliyor. Takıldığım nokta şu biz bu sayının işaretliyi mi yoksa normal binary sayıyı mı kastettiğini nerden anlayacağız? Sorulan sorularda bu bize söylenmek zorunda mı?

Isaretin yanisira, Endian bilgisi de verilmeli. En sondaki bitin neyi temsil ettigi bilmeden yorum yapilamaz.
 
Hayır, bu flag'ler x86 komutlarının sonuçalarını yorumlarken kullanılıyor. Negatif sayıların kodlanması ile alakaları yok. Günümüzde negatif sayıları kodlarken neredeyse bütün makinelerde ikinin tümleyeni kullanılıyor.

İkinin tümleyeni ile her hangi bir tam sayının negatifini bulmak için önce değilini alıyorsun (C de ~ operatörü) ardından 1 ekliyosun. Bu yüzden her hangi bir bit kombinasyonu verildiğinde mutlaka bunu nasıl yorumlayacağın da verilmeli. Örneğin C deki printf'te her hangi bir tamsayıyı nasıl yorumlayacağını format belirteçleri yardımıyla öğrenir. İşaretli olarak yorumlamak istersen %d, işaretsiz olarak yorumlamak istersen %u kullanırsın.
C:
#include <stdio.h>
#include <limits.h>

int main() {
    unsigned int u = -1;
    // Değişken işaretsiz olarak tanımlanmasına rağmen -1 olarak gösterilir.
    printf("%d\n", u);
    // İşaretsiz olarak yorumlanması için %u ile açıkça belirtmek gerekir.
     printf("%u\n", u);
    return 0;
}
 

Geri
Yukarı