imza - Signedness

Hesaplamada, imza , bilgisayar programlarında sayıları temsil eden veri türlerinin bir özelliğidir . Sayısal bir değişken olduğu imzalı hem temsil eğer pozitif ve negatif sayılar ve imzasız yalnızca temsil eğer negatif olmayan sayılar (sıfır veya pozitif sayılar).

Olarak imzalanmış numaraları negatif sayılar sağlayacak şekilde, sadece ile temsil edilebilir pozitif bir sayı aralığı kaybeder işaretsiz kabaca yarısı mümkün için (bit) aynı büyüklükte sayı değerleri , ilgili işaretsiz tipi ithaf oysa, pozitif olmayan değerler pozitif sayı aralığına tüm olası değerler.

Örneğin, ikinin tümleyeni işaretli 16 bitlik bir tamsayı −32768 ila 32767 arasındaki değerleri kapsayıcı olarak tutabilirken, işaretsiz bir 16 bitlik tam sayı 0 ila 65535 arasındaki değerleri tutabilir . Bu işaret gösterim yöntemi için, en soldaki bit ( en anlamlı bit ), değerin pozitif mi yoksa negatif mi olduğunu belirtir (pozitif için 0, negatif için 1).

programlama dillerinde

Çoğu mimari için, makine dilinde işaretli-imzasız tür ayrımı yoktur . Bununla birlikte, aritmetik komutlar genellikle imzasız aritmetik için taşıma bayrağı ve imzalı için taşma bayrağı gibi farklı CPU bayrakları ayarlar . Bu değerler, sonraki dallanma veya aritmetik komutlar tarafından dikkate alınabilir .

C programlama dili , onun türevleri ile birlikte uygular herkes için oluşan bir işaret tamsayı veri türleri , yanı sıra "karakteri" . Tamsayılar için, unsigned değiştiricisi, imzasız olacak türü tanımlar. Varsayılan tamsayı imzası imzalanmıştır, ancak imzalı değiştirici ile açıkça ayarlanabilir . Buna karşılık, C standardı, signed char , unsigned char ve char öğelerini üç farklı tür olarak bildirir , ancak üçünün de aynı boyuta ve hizalamaya sahip olması gerektiğini belirtir. Ayrıca, char , ya imzalı char ya da imzasız char ile aynı sayısal aralığa sahip olmalıdır , ancak bunların seçimi platforma bağlıdır. Tamsayı değişmezleri U soneki ile işaretsiz hale getirilebilir . Örneğin, 0x FFFFFFFF , -1 verir, ancak 0xFFFFFFFFFU , 32 bit kod için 4,294,967,295 verir.

Karşılaştırmalar imzalı ve imzasız sayılar arasında yapıldığı zaman Derleyiciler genellikle bir uyarı ya da bir zaman döküm diğerine. İmzalı ve imzasız türlerin aralıkları farklı olduğundan bunlar potansiyel olarak tehlikeli işlemlerdir.

Ayrıca bakınız

Dış bağlantılar

  • "Sayısal Türe Genel Bakış" . MySQL 5.0 Referans Kılavuzu . mysql.com. 2011 . Erişim tarihi: 6 Ocak 2012 .
  • "Tamsayı dönüştürme kurallarını anlayın" , CERT C Kodlama Standardı , Bilgisayar acil müdahale ekibi , alındı 31 Aralık 2015