Tek duyarlıklı kayan noktalı sayı biçimi

Tek duyarlıklı kayan nokta biçimi (İngilizce: single-precision floating-point format), bilgisayar belleğinde 4 bayt (32 bit) kullanan ve kayan nokta kullanarak geniş bir dinamik değer aralığını temsil eden bir bilgisayar numarası biçimidir.

IEEE 754-2008'de 32-bit taban-2 formatına resmen binary32 denir. IEEE 754-1985'te tek olarak adlandırıldı. Daha eski bilgisayarlarda 4 baytlık farklı kayan nokta biçimleri kullanılmıştır, örn., GW-BASIC'in tek duyarlıklı veri tipi 32-bit MBF kayan nokta biçimindeydi.

IEEE 754 tek duyarlıklı ikili kayan nokta biçimi: binary32

IEEE 754 standardı bir binary32'yi şunlara sahip olmasıyla belirtiyor:

  • İşaret biti: 1 bit
  • Üs genişliği: 8 bit
  • Anlamlı duyarlılık: 24 bit (23 açıkça depolanmış)

Bu örnekte:

  • sign = b 31 = 0 {\displaystyle {\text{sign}}=b_{31}=0} ,
  • ( 1 ) sign = ( 1 ) 0 = + 1 { 1 , + 1 } {\displaystyle (-1)^{\text{sign}}=(-1)^{0}=+1\in \{-1,+1\}} ,
  • e = b 30 b 29 b 23 = i = 0 7 b 23 + i 2 + i = 124 { 1 , , ( 2 8 1 ) 1 } = { 1 , , 254 } {\displaystyle e=b_{30}b_{29}\dots b_{23}=\sum _{i=0}^{7}b_{23+i}2^{+i}=124\in \{1,\ldots ,(2^{8}-1)-1\}=\{1,\ldots ,254\}} ,
  • 2 ( e 127 ) = 2 124 127 = 2 3 { 2 126 , , 2 127 } {\displaystyle 2^{(e-127)}=2^{124-127}=2^{-3}\in \{2^{-126},\ldots ,2^{127}\}} ,
  • 1. b 22 b 21 . . . b 0 = 1 + i = 1 23 b 23 i 2 i = 1 + 1 2 2 = 1.25 { 1 , 1 + 2 23 , , 2 2 23 } [ 1 ; 2 2 23 ] [ 1 ; 2 ) {\displaystyle 1.b_{22}b_{21}...b_{0}=1+\sum _{i=1}^{23}b_{23-i}2^{-i}=1+1\cdot 2^{-2}=1.25\in \{1,1+2^{-23},\ldots ,2-2^{-23}\}\subset [1;2-2^{-23}]\subset [1;2)} .

böylece:

  • {\displaystyle } .

Not:

  • {\displaystyle } ,
  • {\displaystyle } ,
  • {\displaystyle } ,
  • {\displaystyle } .

Üs kodlama

Tek duyarlıklı örnekleri

3f80 0000 = 0 01111111 00000000000000000000000 = 1
c000 0000 = 1 10000000 00000000000000000000000 = −2
7f7f ffff = 0 11111110 11111111111111111111111 = (1 − 2−24) × 2128 ≈ 3.402823466 × 1038  (tek duyarlıklı maks. sonlu pozitif değer)
0080 0000 = 0 00000001 00000000000000000000000 = 2−126 ≈ 1.175494351 × 10−38 (tek duyarlıklı min. normalize pozitif değer)
0000 0000 = 0 00000000 00000000000000000000000 = 0
8000 0000 = 1 00000000 00000000000000000000000 = −0
7f80 0000 = 0 11111111 00000000000000000000000 = artı sonsuz
ff80 0000 = 1 11111111 00000000000000000000000 = eksi sonsuz
3eaa aaab = 0 01111101 01010101010101010101011 ≈ 1/3

Tek duyarlıklı ikili sayıyı ondalık sayıya dönüştürme

Bu örnekte 41c80000 değerinin onaltılı gösterimi ile başlayıp ve ikili dosyaya dönüştürüyoruz:

47f8 000016 = 0100 0001 1100 1000 0000 0000 0000 00002

Sonra onu üç kısma ayırıyoruz: işaret biti, üs biti ve anlamlı bit.

bit 24 = 1
bit 23 = 0.5
bit 22 = 0.25
bit 21 = 0.125
bit 20 = 0.0625
bit 19 = 0.03125
.
.
bit 0 = 0.00000011920928955078125

Ayrıca bakınız

  • IEEE Standart Kayan Noktalı Sayı Aritmetiği (IEEE 754)

Kaynakça

Dış bağlantılar

  • Canlı kayan noktalı bit desen editörü20 Aralık 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  • Online hesap makinesi7 Mart 2017 tarihinde Wayback Machine sitesinde arşivlendi.
  • Tek duyarlıklı IEEE 754 numaraları için Online dönüştürücü
    30 Nisan 2017 tarihinde Wayback Machine sitesinde arşivlendi.
  • IEEE çift, tek ve yarım duyarlık arasında dönüştürme yapabilmek için C kaynak kodu
    31 Ekim 2009 tarihinde Wayback Machine sitesinde arşivlendi.