Mendekode IEEE 754: Bilangan Pecahan 32-bit (Floating Point)
Pernahkah kamu bertanya-tanya bagaimana komputer, yang hanya memahami angka 0 dan 1, dapat menyimpan bilangan desimal seperti 14.0 atau 3.14? Jawabannya ada pada standar cerdas yang disebut IEEE 754.
Dalam artikel ini, kita akan membedah bagaimana bilangan floating point 32-bit bekerja, dan kita akan mendekode sebuah contoh nyata bersama-sama. Jangan khawatir jika terdengar rumit—kita akan membahasnya langkah demi langkah!
Anatomi Float 32-bit
Bilangan floating point 32-bit dibagi menjadi tiga bagian:
- Sign/Tanda (S): 1 bit yang memberi tahu kita apakah bilangan itu positif atau negatif.
- Exponent/Eksponen (E): 8 bit yang menentukan skala bilangan (seberapa besar atau kecil angkanya).
- Fraction/Fraksi (F): 23 bit yang mewakili digit aktual dari bilangan tersebut (juga disebut Mantissa).
Berikut adalah representasi visual bagaimana 32 bit tersebut disusun:
Arch Note
Interactive logic enabled. Click components in expanded view for technical service definitions.
(Catatan: Diagram di atas menggunakan sintaks packet dari Mermaid untuk menunjukkan distribusi bit)
Rumus untuk mengubah ini kembali menjadi bilangan desimal adalah:
(-1)^S × 2^(E - 127) × (1 + F)
Mari kita bedah sebuah soal nyata menggunakan rumus ini.
Studi Kasus
Menurut standar IEEE-754, manakah dari pilihan berikut yang merupakan nilai desimal dari bilangan floating point 32-bit di bawah ini?
01000001011000000000000000000000a) 0.1875 b) 0.4375 c) 6.0 d) 14.0
Mari kita selesaikan langkah demi langkah!
Langkah 1: Pisahkan Bit
Pertama, kita bagi urutan 32-bit menjadi tiga bagian kita:
- Sign (1 bit):
0 - Exponent (8 bits):
10000010 - Fraction (23 bits):
11000000000000000000000
Langkah 2: Tentukan Tanda (S)
Bit yang paling pertama adalah 0.
0berarti bilangannya adalah positif.1berarti bilangannya adalah negatif.
Jadi, S = 0. Di dalam rumus kita, (-1)^0 = 1.
Langkah 3: Hitung Eksponen (E)
8 bit berikutnya adalah 10000010. Kita perlu mengubah bilangan biner ini menjadi desimal.
Ingat bahwa setiap posisi dalam biner mewakili pangkat dari 2:
1 × 2^7=1280 × 2^6=00 × 2^5=00 × 2^4=00 × 2^3=00 × 2^2=01 × 2^1=20 × 2^0=0
Jumlahkan semuanya: 128 + 2 = 130.
Jadi, E = 130.
Rumus tersebut menggunakan E - 127 (di mana 127 disebut "bias").
Pangkat eksponen aktual kita adalah 130 - 127 = 3.
Jadi, kita akan mengalikannya dengan 2^3, yang mana adalah 8.
Langkah 4: Hitung Fraksi (F)
Sisa 23 bit adalah 11000000000000000000000.
Untuk bagian fraksi, kita menghitung pangkat dari 2 ke arah bawah dimulai dari -1:
- Bit pertama mewakili
2^{-1}(atau0.5) - Bit kedua mewakili
2^{-2}(atau0.25) - Bit ketiga mewakili
2^{-3}(atau0.125), dan seterusnya.
Fraksi kita dimulai dengan 11 dan sisanya adalah 0:
- Bit 1 adalah
1→1 × 0.5 = 0.5 - Bit 2 adalah
1→1 × 0.25 = 0.25 - Sisanya adalah
0→0
Jumlahkan: F = 0.5 + 0.25 = 0.75.
Rumus menggunakan (1 + F), sehingga kita mendapatkan 1 + 0.75 = 1.75.
Langkah 5: Gabungkan Semuanya
Sekarang kita masukkan nilai-nilai kita ke dalam rumus asli:
(-1)^S × 2^(E - 127) × (1 + F)
- Bagian Tanda:
1 - Bagian Eksponen:
2^3 = 8 - Bagian Fraksi:
1.75
1 × 8 × 1.75 = 14.0
Nilai desimal akhirnya adalah 14.0.
[!TIP] Jawaban: Pilihan yang benar adalah d) 14.0!
Dan begitulah cara komputer menyimpan bilangan desimal! Dengan memecahnya menjadi Sign, Exponent, dan Fraction, sebuah string sederhana dari 1 dan 0 dapat merepresentasikan rentang nilai pecahan yang sangat luas dengan presisi yang luar biasa.