Cara Kerja Floating Point
IEEE 754
Intinya IEEE 754 adalah standar international untuk merepresentasikan floating-point (bilangan pecahan) dalam bentuk biner. Secara umum punya dua jenis yaitu: single precision (32-bit) dan double precision (64-bit). Semakin besar jumlah bit maka suatu bilangan floating-point mampu merepresentasikan suatu bilangan dengan lebih akurat, presisi, serta bisa mengurangi rounding errors; Tetapi juga memerlukan memori yang lebih besar.
Convert Biner ke floating point (32-bit)
Misal kita punya bilangan biner 00111111010000000000000000000000. Angka biner tersebut dibagi menjadi tiga bagian yaitu sign, exponent, dan mantissa
1. Sign: Menentukan apakah bilangan itu positif atau negatif. Kalau nilainya 1 berati bilangan negatif, kalau 0 berati positif.
2. Exponent: untuk menghitung exponent kita konversi ke decimal lalu dikurangi bias yaitu 127 untuk FP32
3.Mantissa: Untuk kalkulasi mantissa kita perlu memerhatikan posisi angka 1
jadi untuk mantissa di atas:
Jadi untuk hasil akhir:
karena sign tadi adalah 0 yang artinya bilangan positif, maka nilai floating point 32-bit dari 00111111010010000000100000000000 adalah 0.75
Contoh lain: 64-bit
contoh kita mau konversi 1100000000001001000111101011100001010001111010111000010100011111
1. Sign: karena 1 maka sudah dipastikan negatif 2. Exponent: Bias untuk 64-bit adalah 1023
2.Mantissa: Biar cepet pake koding dikit, hasilnya 1.57
tes = "1001000111101011100001010001111010111000010100011111"
m = 0
for i, num in enumerate(tes, start=1):
if num == "1":
m += 2**-i
mantissa = 1 + m
print(mantissa) # 1.57
Hasil akhir
Karena sign nya adalah 1 (negatif), maka hasil akhir adalah -3.14

