Floating point number gösterirken 2 üzeri -127 ve 0 aynı değere denk gelmiyor mu?

Katılım
26 Ocak 2020
Mesajlar
6.332
Makaleler
1
Çözümler
13
Yer
İstanbul
2^127=

0
00000000
00000000000000000000000

Fakat 0 da aynısını gösteriyor. Bu ikisini ayırmak mümkün mü yoksa bizim 0.99999... = 1 dediğimiz gibi bu kadar küçük bir sayı = 0 mı diyor bilgisayar?
 
2 üzeri -127 işleminin sonucunda 0.000…(39 tane sıfır) ve devamında belirli rakamlar geliyor. Print fonksiyonunun hassasiyeti yetmiyordur bunu göstermeye.

Ayarlamak için mesela C’de:
C:
printf(“%.50Lf”, number);
Bu şekilde “0.”dan sonraki basamak sayısını verirsen gerçek değeri görebilirsin.
 
Bilgisayar icin 2 uzeri -127 sifir degil, hayir. int a = 2^1-127 dediysen yada yeterince precision tanimlamadiysan 0 goreceksin cunku sayinin kendisi virgulden sonra ki 39. basamakta basliyor.

Kendin soyle test edebilirsin bilgisayarin onu sifir olarak degerlendirip degerlendirmedigini;
Python:
print((2 ** -127) == 0) # Cikti False olacak
C++:
std::cout << (std::powl(2, -127) == 0); // Cikti 0 olacak. Alternatif olarak false.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…