February 02, 2017

Selamün Aleyküm Arkadaşlar;

Android NDK -> platforms -> android-<sürüm> -> arch-arm -> usr -> include bu dizin içerisinde bulunan jni.h başlık dosyası içerisinde Java için tür tanımlamalarını yapmışlar ve dikkatimi çeken nokta şu oldu:

typedef signed char    jbyte;  /* signed 8 bits */

Burada 'byte 'türünü 'signed char' olarak tanımlamış, lakin benim bildiğim 'byte' 0 ila 255 arası, yani toplamda 256 karakterden birini tutabilir ve bu da 'unsigned char''a denk geliyor. jni.h başlık doyasında niçin bu şekilde tanımlanmış olabilir? Bu şekilde tanımlanması yanlış değil mi? Çünkü bu şekilde -255 ila 255 arası bir değer tutar olmuyor mu?

Düzeltme: 'signed char' -128 ila 127 arası bir değer tutuyormuş. Peki bu nasıl oluyor? Sonuçta 'unsigned char' 0 ila 255 arası değer tutuyor. Ama 'signed char' ile 'jbyte' tanımlayarak niçin -'li değerler tutulmak istenmiş ve niçin 127'e kadar değer tutuluyor?

Teşekkürler!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 02, 2017

Öncelikle, eğer amaç sekiz adet bit ise, -128 ile 127 arasında değer alabilen bir tür de bayt olarak kullanılabilir çünkü onun da 8 biti var. Orada bir sorun yok.

Ama bence asıl istedikleri, eksi değerler de alabilen bir tür. Yani, adı byte olsa da bir küme bit anlamında değil, bir tamsayı ihtiyacındalar. Öyle olunca, neden int eksi değerler alabilsin de onların 8 bitlik tamsayısı alamasın? Öyle düşününce sorun kalmıyor.

Hatta, eğer yalnızca artı değerler kullanılabilecekse bile, bu türle ifade edilebilecek bir kavramın 255 değerine kadar çıkabilmesi ama 127'nin yetmemesi ne kadar olasıdır? Yani bu dünyada tam da 127 ile 255 arasında değer gerektiren kavram nedir? (127'den fazla olmalı ama 255'ten fazlayı da gerektirmemeli.)

İşaretli ve işaretsiz türler aynı bitle tanımlandıklarında en üst bit eksi veya artı olduğunu bildirir: 1 ise eksi, 0 ise artıdır. Şurada artı ve eksi değerlerin nasıl karşılık geldikleri 3 bitlik bir tür üzerinde gösteriliyor:

http://ddili.org/ders/d/aritmetik_islemler.html#ix_aritmetik_islemler.bit

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]