Forum: Diğer Konular RSS
İkinin Tümleyeni
2’s Complement
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: İkinin Tümleyeni
Şurada tartışmaya başlamıştık...
Salih Dinçer:
Haklısın hocam, ikinin tümleyenini unutmuşum! Yani byte için 127'den sonra 0 (binary 128) gelirken hemen -127'den devam ederek matematiksel olarak yine 0'a yaklaşıyor. Bunu aşağıdaki örnekte göstermeye çalıştım:
void main() {
    string delegate (byte) noluyor = b => std.string.format("%d\t%d\n", b, ~b) ~
                                          std.string.format("%b\t~%.8b", b, ~b);
    std.stdio.writeln(noluyor(15));
    foreach(byte xSay; -16..0) std.stdio.writefln("%d: %b", xSay, xSay);
}
Bir şey daha unutmuşum: İşaretli sayılarda türün iki sıfırı mı var!
:)

Ben öyle zannediyordum ki bunu yukarıda ifade ettim (binary 128). Oysa teoride böyle olsa da sanırım pratikte bu kullanılmıyor. Bunu şu kodu deneyerek anlayabilirsiniz:
foreach(byte i; -128..0) {
    writefln("%d: %b", i, i);
}
Oysa bütün türlerde olduğu gibi .max ile .min'nin işaretsiz değeri birbirine eşit değil. Bunu da şu assert(iddia ediyorum) ile anlıyoruz:
assert(long.max != std.math.abs(long.min));
Aslında bu bilgiler kanıksadığım şeyler. Yani her zaman gördüğümüz, gözümüzün altında olan ülfet ile baktığımız şeyler. Arada böyle hatırlatmalar iyi olur bea...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 05:10:44 (UTC -08:00)