Forum: Diğer Konular RSS
Byte Türü Nasıl Signed Char Oluyor?
İbrahim #1
Üye Eki 2015 tarihinden beri · 129 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Byte Türü Nasıl Signed Char Oluyor?
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 mesaj İbrahim tarafından değiştirildi; zaman: 2017-02-02, 11:37.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ö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_aritmet…

Ali
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-06-24, 22:27:51 (UTC -07:00)