FLOATING
POINT
Floating-point adalah
sebuah bilangan yang digunakan untuk menggambarkan sebuah nilai yang sangat
besar atau sangat kecil. Bilangan tersebut dapat diwujudkan dalam notasi
ilmiah, yaitu berupa angka pecahan desimal dikalikan dengan angka 10
pangkat bilagnan tertentu. Bilangan seperti ini dapat direpresentasikan menjadi
dua bagian, yaitu bagianmantisa dan bagian eksponen (E).Bagian mantisa menentukan digit dalam angka
tersebut, sementara eksponen menentukan nilai berapa besar pangkat pada bagian
mantisa tersebut (pada posisi titik desimal). Sebagai contoh, bilangan
314600000 dan bilangan 0.0000451 dapat direpresentasikan dalam bentuk
bilangan floating point: 3146E5 dan 451E-7 (artinya 3146 * 10
pangkat 5, dan 451 * 10 pangkat -7). Notasi floating-point dapat
digunakan untuk merepresentasikan baik bilangan yang sangat besar (|N| » 0),
bilangan yang sangat kecil atau dekat dengan nol (|N| « 1), maupun bilangan
yang terdiri dari keduanya. Floating-point membuat proses operasi aritmatika
menjadi relatif lebih mudah. Floating-point merepresentasi bilangan nyata dalam
bentuk persamaan:
N
= m × Re
Dimana:
m
merupakan bagian bilangan pecahan yang biasa disebut significand atau mantissa
e adalah bagian bilangan bulat yang biasa disebut exponent
R merupakan basis dari suatu sistem bilangan
e adalah bagian bilangan bulat yang biasa disebut exponent
R merupakan basis dari suatu sistem bilangan
·
Mantissa dan eksponen direpresentasikan secara eksplisit dalam komputer.
Tetapi basisnya (base) adalah yg digunakan oleh komputer tersebut.
·
Umumnya komputer mengikuti basis 2.
·
Umumnya sebuah bilangan f direpresentasikan sebagai f = m x re di mana m
adalah mantissa, r adalah basis dari sistem bilangan dan e adalah eksponen
(pangkat dari basis yg digunakan).
·
Semula penggunaan format berbeda antar pabrik komputer untuk
merepresentasikan bilangan floating-point. Tetapi saat ini telah digunakan
format standar ANSI/IEEE secara luas (format IEEE 754). Sedangkan IBM
·
mempunyai standar khusus.
·
Ada dua format standar IEEE 754 yg dikeluarkan yaitu untuk presisi
tunggal (single precision) dan format standar untuk bilangan presisi ganda
(double precision).
·
Semula penggunaan format berbeda antar pabrik komputer untuk
merepresentasikan bilangan floating-point. Tetapi saat ini telah digunakan
format standar ANSI/IEEE secara luas (format IEEE 754). Sedangkan IBM
·
mempunyai standar khusus.
·
Ada dua format standar IEEE 754 yg dikeluarkan yaitu untuk presisi
tunggal (single precision) dan format standar untuk bilangan presisi ganda
(double precision).
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd ... dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.
Ø
Tata Letak penyimpanan
IEEE floating point 754 memiliki tiga komponen dasar: penanda
(sign), eksponen, dan mantissa. Mantissa terdiri dari fraksi dan digit utama
implisit. Sedangkan basis eksponen bersifat implisit dan tidak perlu disimpan..
o Bit Penanda
(Sign Bit)
Pada bit penanda 0 menunjukkan angka positif, 1
menunjukkan angka negatif. Apa bila membalik nilai bit, maka nilainya juga
disesuaikan.
o Eksponen
Field eksponen digunakan untuk mewakili
eksponen positif maupun negatif. Untuk melakukan hal ini, bias ditambahkan ke
eksponen yang sebenarnya untuk mendapatkan eksponen yang akan disimpan. Pada
IEEE single-precision, nilai biasnya adalah 127. Dengan demikian, artinya
eksponen nolnya 127 disimpan di field eksponen. Contohnya apabila nilai yang
disimpan 200 maka menunjukkan bahwa eksponennya (200-127) atau sama dengan 73.
Sedangkan nilai 8 pada eksponen menunjukkan field eksponen pada single
precision adalah 8 bit. Untuk double precision, field eksponennya
adalah 11 bit, dan memiliki bias 1023.
o
Mantissa
Mantissa, juga dikenal sebagai significand
digunakan untuk merepresentasikan precision bit dari suatu angka. Mantissa
terdiri dari sebuah bit utama yang bersifat implisit dan fraction bit.
Represensasi bilangan floating-point seringkali
dinormalisasi terhadap radixnya, misalnya
1, 5 × 1044atau 1, 253 × 10 − 36.Format bilangan floating-point
biner telah distandarkan oleh IEEE 754-2008 (atau ISO/IEC/IEEE 60559:2011),
yaitu meliputi format 16-bit (half), 32-bit (single-precision),
64-bit (double-precision), 80-bit (double-extended) dan 128-bit (quad-precision).
Di bab ini hanya dibahas tentang format dasar, yaitu 32-bit dan 64-bit.
A.
BILANGAN FLOATING POINT
1) Bilangan Floating-Point 32-bit (single-precision)
Format floating-point presisi tunggal adalah format nomor
komputer , biasanya menempati 32 bit dalam memori komputer ; itu mewakili rentang nilai numerik dinamis yang luas dengan
menggunakan titik radix mengambang . Variabel
floating point dapat mewakili rentang angka yang lebih luas daripada variabel titik tetap dengan lebar
bit yang sama dengan biaya presisi. Sebuah variabel integer 32-bit bertanda tangan memiliki nilai
maksimum 2 31 - 1 = 2,147,483,647, sedangkan variabel floating-point
IEEE 754 32-bit memiliki nilai maksimum (2 - 2 −23 ) × 2 127
≈ 3.402823 × 10 38 .
Semua bilangan bulat dengan 6 atau lebih sedikit digit desimal
signifikan , dan angka apa pun yang dapat ditulis sebagai 2 n
sehingga n adalah bilangan bulat dari -126 hingga 127, dapat dikonversi menjadi
nilai floating-point IEEE 754 tanpa kehilangan presisi. Dalam standar IEEE 754-2008 , format
basis-2 32-bit secara resmi disebut sebagai binary32 ; itu disebut single
di IEEE 754-1985 .
- 8 bit eksponen (E), dan
- 23 bit untuk mantisa (M)
Format bilangan floating-point 32-bit Figure
0.1
Bit tanda (S)
menyatakan bilangan positif jika S=0 dan negatif jika S=1.
Field eksponen
adalah radix 2. Nilai eksponen bisa negatif atau positif untuk menyatakan
bilangan yang sangat kecil atau sangat besar. Format eksponen yang digunakan
adalah excess-127. Nilai 127 ditambahkan
dari nilai eksponen sebenarnya (Exp), yaitu Exp = E − 127. Dengan excess-127, nilai E akan
selalu positif dengan jangkauan 0 sampai 255.
- Nilai ekstrem adalah untuk E=0 dan E=255
- E=0 menyatakan bilangan NOL (jika M = 0) dan subnormal (jika M ≠ 0)
- E=255 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0);
- Nilai normal adalah 1 ≤ E ≤ 254 yang menunjukkan nilai eksponen sebenarnya dari -126 sampai 127
- Contoh: Emin(1) = − 126, E(50) = − 77 dan Emax(254) = 127;
Mantissa=0
|
Mantissa ≠ 0
|
Persamaan
|
||
0
|
0,
-0
|
subnormal
|
( − 1)S × 0.bit signifikan × 2 − 126
|
|
1-254
|
Nilai ternormalisasi
|
( − 1)S × 1.bit signifikan × 2E
− 127
|
||
255
|
∞
|
bukan
bilangan (NAN=not-a-number)
|
||
Nilai eksponen di format floating-point
32-bit Table 0.1
Saat nilai
mantisa (M) dinormalisasi, most significant bit (MSB) selalu 1. Namun,
bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa (Tabel 0.1↑). Nilai mantisa yang
sebenarnya adalah 1.M, sehingga nilai bilangan floating-pointnya
menjadi:
Di bilangan subnormal, nilai mantisa
sebenarnya adalah 0.M, sehingga bilangan floating-pointnya menjadi:
Dengan mantissa
23 bit ini ditambah 1 bit implisit, total presisi dari representasi
floating-point 32-bit ini adalah 24 bit atau sekitar 7 digit desimal (yaitu 24 × log10(2) = 7.225).
Dalam
pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe
data float (bahasa C, C++, Java) dan single (Pascal, VB,
MATLAB).
float anumber; // 32-bit single precision
number
int main(){
anumber = -1.1245;
...
return 0;
}
2) Bilangan Floating-Point 16-bit (half-precision)
Setengah presisi adalah format nomor
komputer floating-point biner yang menempati 16 bit (dua byte dalam
komputer modern) dalam memori komputer . Dalam standar IEEE 754-2008 , format basis
16-bit 2 disebut sebagai binary16 . Hal ini dimaksudkan untuk
penyimpanan nilai-nilai floating-point dalam aplikasi di mana presisi yang
lebih tinggi tidak penting untuk melakukan perhitungan aritmatika. Meskipun implementasi dari floating point Half-precision IEEE
relatif baru, beberapa sebelumnya format floating-point 16-bit telah ada
termasuk yang dari Hitachi HD61810 DSP [1] tahun 1982, Scott's WIF [2] dan prosesor grafis 3dfx
Voodoo .
Format ini digunakan di beberapa lingkungan grafis komputer termasuk OpenEXR , JPEG XR , GIMP , OpenGL , Cg , dan D3DX . Keuntungan
lebih dari 8-bit atau bilangan bulat biner 16-bit adalah bahwa rentang dinamis yang meningkat
memungkinkan untuk lebih detail untuk dipertahankan dalam sorotan dan bayangan untuk gambar. Keuntungan
lebih dari 32-bit format biner presisi tunggal adalah bahwa ia
memerlukan setengah penyimpanan dan bandwidth (dengan
mengorbankan presisi dan jangkauan).
Standar IEEE 754 menentukan biner16 memiliki format berikut:
- Tanda tangan : 1 bit
- Lebar eksponen : 5 bit
- Ketelitian dan presisi : 11 bit (10 disimpan secara
eksplisit)
Formatnya ditata sebagai berikut:
Format diasumsikan memiliki bit prospek implisit dengan nilai 1
kecuali bidang eksponen disimpan dengan semua nol. Jadi hanya 10 bit significand yang muncul dalam
format memori tetapi ketelitian totalnya adalah 11 bit. Dalam IEEE 754 bahasa, ada 10 bit significand, tetapi ada 11
bit significand precision (log 10 (2 11 ) ≈ 3.311 digit
desimal, atau 4 digit ± sedikit kurang dari 5 unit di tempat terakhir ). Eksponen floating-point
biner presisi setengah dikodekan menggunakan representasi offset-biner , dengan nol offset
menjadi 15; juga dikenal sebagai bias eksponen
dalam standar IEEE 754.
- E
min = 00001 2 - 01111 2 = −14
- E
maks = 11110 2 - 01111 2 = 15
- Prediksi
eksponensial = 01111 2 = 15
Jadi, seperti yang didefinisikan oleh representasi biner offset,
untuk mendapatkan eksponen yang benar, offset dari 15 harus dikurangkan dari
eksponen yang disimpan.
Eksponen yang disimpan 00000 2 dan 11111 2
ditafsirkan secara khusus.
Eksponen
|
Significand
= nol
|
Signifikan
dan ≠ nol
|
Persamaan
|
00000
2
|
(−1)
signbit × 2 −14 × 0.significantbits 2
|
||
00001
2 , ..., 11110 2
|
nilai
normalisasi
|
(−1)
signbit × 2 eksponen − 15 × 1. Bit signifikan 2
|
|
11111
2
|
Nilai sangat positif (subnormal) minimum adalah 2 −24 ≈
5.96 × 10 −8 . Nilai normal positif minimum adalah 2 −14 ≈ 6.10 ×
10 −5 . Nilai maksimum yang dapat
diwakili adalah (2−2 −10 ) × 2 15 = 65504.
3) Bilangan Floating-Point 64-bit (Double-precision)
Format floating-point presisi ganda
adalah format nomor
komputer , biasanya menempati 64 bit
dalam memori komputer; itu mewakili rentang nilai numerik dinamis yang
luas dengan menggunakan titik radix
mengambang . Titik mengambang digunakan untuk merepresentasikan nilai
pecahan, atau ketika rentang yang lebih luas dibutuhkan daripada yang
disediakan oleh titik tetap (dengan lebar bit yang sama), bahkan jika dengan biaya
presisi. Presisi ganda dapat dipilih ketika
rentang atau ketepatan presisi tunggal
tidak mencukupi. Dalam standar IEEE 754-2008 , format basis-2 64-bit secara resmi disebut sebagai binary64
; itu disebut ganda di IEEE 754-1985 . IEEE 754 menentukan format
floating-point tambahan, termasuk 32-bit presisi presisi base-2 dan,
yang lebih baru, basis-10 representasi. Salah
satu bahasa.pemrograman pertama yang menyediakan tipe data floating-point presisi
tunggal dan ganda adalah Fortran . Sebelum adopsi luas IEEE
754-1985, representasi dan properti dari tipe data floating-point tergantung
pada pabrikan komputer dan model komputer, dan pada keputusan yang dibuat
oleh pelaksana bahasa pemrograman. Misalnya, tipe
data presisi ganda GW-BASIC adalah 64-bit MBF floating-point format. Double-precision
binary floating-point adalah format yang umum digunakan pada PC, karena
jangkauannya yang lebih luas atas floating point presisi tunggal, terlepas dari
kinerja dan biaya bandwidth. Seperti dengan
format floating-point presisi tunggal , ia tidak memiliki presisi pada bilangan bulat jika
dibandingkan dengan format bilangan bulat dengan ukuran yang sama. Ini umumnya hanya dikenal sebagai ganda . Standar IEEE 754 menetapkan binari64 memiliki:
- Tanda tangan : 1 bit
- Eksponen : 11 bit
- Ketelitian dan presisi : 53 bit (52 disimpan secara
eksplisit)
Tanda bit menentukan tanda nomor (termasuk ketika angka ini adalah
nol, yang ditandatangani ).
Bidang eksponen dapat ditafsirkan sebagai bilangan bulat bertanda
11-bit dari −1024 hingga 1023 ( pelengkap 2 ) atau bilangan
bulat 11-bit unsigned dari 0 hingga 2047, yang merupakan bentuk bias yang
diterima dalam definisi biner64 IEEE 754. Jika
format integer unsigned digunakan, nilai eksponen yang digunakan dalam
aritmatika adalah eksponen yang digeser oleh bias - untuk kasus biner64 IEEE
754, nilai eksponen 1023 menunjukkan nol yang sebenarnya (yaitu untuk 2 e
- 1023 menjadi satu, e harus 1023). Eksponen
berkisar dari −1022 hingga +1023 karena eksponen −1023 (semua 0s) dan +1024
(semua 1s) dicadangkan untuk nomor khusus.
The 53-bit significand presisi memberikan dari 15 hingga 17 presisi digit desimal yang signifikan
(2 −53 ≈ 1.11 × 10 −16 ). Jika
string desimal dengan paling banyak 15 digit signifikan diubah menjadi
representasi presisi ganda IEEE 754, dan kemudian dikonversi kembali ke string
desimal dengan jumlah digit yang sama, hasil akhir harus cocok dengan string
asli. Jika nomor presisi ganda IEEE 754 diubah
menjadi string desimal dengan setidaknya 17 digit signifikan, dan kemudian
diubah kembali ke representasi presisi ganda, hasil akhir harus sesuai dengan
nomor asli. [1]
Format ditulis dengan significand yang memiliki bit
integer implisit dari nilai 1 (kecuali untuk data khusus, lihat pengkodean
eksponen di bawah). Dengan 52 bit dari pecahan
significand muncul dalam format memori, maka kepresisian total adalah 53 bit
(kira-kira 16 digit desimal, 53 log 10 (2) ≈ 15.955). Bit-bit tersebut ditata sebagai berikut:
Antara 2 52 = 4,503,599,627,370,496 dan 2 53 =
9,007,199,254,740,992, jumlah yang dapat diwakilkan adalah bilangan bulat. Untuk rentang berikutnya, dari 2 53
hingga 2 54 , semuanya dikalikan dengan 2, jadi nomor yang
diwakilkan adalah yang genap, dll. Sebaliknya, untuk rentang sebelumnya dari 2 51
hingga 2 52 , jaraknya adalah 0,5, dll. Jarak sebagai pecahan dari angka dalam kisaran dari 2 n
ke 2 n +1 adalah 2 n − 52 . Kesalahan pembulatan relatif maksimum ketika pembulatan angka
ke nomor representabel terdekat ( mesin epsilon ) adalah 2 −53 . Lebar 11 bit dari eksponen memungkinkan representasi angka
antara 10 −308 dan 10 308 , dengan ketepatan desimal
15-17 angka penuh. Dengan mengorbankan presisi,
representasi subnormal memungkinkan nilai yang lebih kecil hingga sekitar 5 ×
10 −324 .
Nilai riil diasumsikan oleh datum presisi
ganda 64-bit yang diberikan dengan eksponen bias yang
diberikan dan fraksi 52-bit
4) Bilangan Floating-Point 80-bit
(Extended-precision)
Format x86 extended precision adalah format
80-bit yang pertama kali diimplementasikan pada coprosesor matematika 8087 Intel dan didukung oleh
semua prosesor yang didasarkan pada desain x86 yang
menggabungkan unit titik-mengambang
(FPU). Format 80-bit ini menggunakan satu bit
untuk tanda significand, 15 bit untuk bidang eksponen (yaitu rentang yang sama
seperti format bit-bit presisi IEEE 754 128-bit) dan 64 bit untuk significand.
Bidang eksponen bias oleh 16383, yang berarti
bahwa 16383 harus dikurangkan dari nilai dalam bidang eksponen untuk menghitung
daya aktual 2. [18] Nilai bidang eksponen 32767 (semua lima belas bit 1 )
dicadangkan untuk memungkinkan representasi keadaan khusus seperti infinity dan Not a Number . Jika bidang eksponen nol, nilainya adalah angka denormal dan eksponen 2 adalah
−16382. [19]
Dalam
tabel berikut, " s " adalah nilai dari bit tanda (0 berarti positif,
1 berarti negatif), " e " adalah nilai bidang eksponen yang
ditafsirkan sebagai bilangan bulat positif, dan " m " adalah
arti dan ditafsirkan sebagai bilangan biner positif di mana titik biner
terletak di antara bit 63 dan 62. Bidang " m " adalah kombinasi
dari bagian bilangan bulat dan fraksi dalam diagram di atas.
Interpretasi bidang nilai Diperpanjang x86
Diperpanjang
|
|||
Eksponen
|
Significand
|
Berarti
|
|
Semua Zero
|
Bit 63
|
Bits 62-0
|
|
Nol
|
Nol
|
Nol. Tanda bit memberi tanda nol.
|
|
Bukan nol
|
Denormal. Nilainya adalah (−1) s × m × 2 −16382
|
||
Satu
|
Apa pun
|
Pseudo Denormal. The 80387 dan kemudian benar menafsirkan
nilai ini tetapi tidak akan menghasilkannya. Nilainya
adalah (−1) s × m × 2 −16382
|
|
Semua orang
|
Bits 63,62
|
Bits 61-0
|
|
00
|
Nol
|
Pseudo-Infinity. Tanda itu memberi tanda
ketidakterbatasan. The 8087 dan 80287
memperlakukan ini sebagai Infinity. 80387 dan
kemudian memperlakukan ini sebagai operan yang tidak valid.
|
|
Bukan nol
|
Pseudo Bukan
Angka. Tanda itu tidak
berarti. 8087 dan 80287 memperlakukan ini sebagai
Memberi Sinyal Bukan Nomor. 80387 dan kemudian
memperlakukan ini sebagai operan yang tidak valid.
|
||
01
|
Apa pun
|
Pseudo Bukan
Angka. Tanda itu tidak
berarti. 8087 dan 80287 memperlakukan ini
sebagai Memberi Sinyal Bukan Nomor. 80387 dan
kemudian memperlakukan ini sebagai operan yang tidak valid.
|
|
10
|
Nol
|
Infinity. Tanda itu memberi tanda
ketidakterbatasan. 8087 dan 80287
memperlakukan ini sebagai Memberi Sinyal Bukan Nomor. Para koprosesor 8087 dan 80287 menggunakan representasi
pseudo-infinity untuk infinitas.
|
|
Bukan nol
|
Signaling Not a
Number, bit tanda tidak ada artinya.
|
||
11
|
Nol
|
Floating-point
Indefinite, hasil dari perhitungan tidak valid seperti akar kuadrat dari
angka negatif, logaritma dari angka negatif, 0/0, infinity / infinity, infinity
times 0, dan lain-lain ketika prosesor telah dikonfigurasi untuk tidak
menghasilkan pengecualian untuk operan tidak valid. Tanda itu tidak berarti. Ini adalah kasus khusus dari Tenang Bukan Nomor.
|
|
Bukan nol
|
Tenang Bukan
Nomor, sedikit tanda tidak ada artinya. 8087 dan 80287 memperlakukan ini sebagai Memberi Sinyal
Bukan Nomor.
|
||
Semua nilai lainnya
|
Bit 63
|
Bits 62-0
|
|
Nol
|
Apa pun
|
Tidak normal. Hanya dihasilkan pada 8087 dan 80287.
80387 dan kemudian memperlakukan ini sebagai operan yang tidak valid. Nilainya adalah (−1) s
× m × 2 e −16383
|
|
Satu
|
Apa pun
|
Nilai
normalisasi. Nilainya
adalah (−1) s × m × 2 e −16383
|
Berbeda dengan format single dan double-precision , format ini tidak menggunakan bit implisit / tersembunyi . Sebaliknya, bit 63 berisi bagian integer dari significand dan
bit 62-0 memegang bagian pecahan. Bit 63 akan
menjadi 1 pada semua angka yang dinormalisasi.
Contoh penting dari kebutuhan minimum 64 bit presisi dalam arti
format perpanjangan yang diperluas adalah kebutuhan untuk menghindari
kehilangan presisi ketika melakukan eksponensial pada nilai presisi ganda . Unit floating-point x86 tidak memberikan instruksi yang
secara langsung melakukan eksponensial . Sebaliknya, mereka menyediakan serangkaian instruksi yang
dapat digunakan program secara berurutan untuk melakukan eksponensial
menggunakan persamaan:
Untuk menghindari kehilangan presisi, hasil antara " log 2 x " dan
" y log 2 x " harus
dihitung dengan presisi yang jauh lebih tinggi karena secara efektif baik
eksponen dan bidang significand dari x harus sesuai dengan bidang significand dari
hasil antara . Selanjutnya
bidang significand dari hasil antara dibagi antara eksponen dan significand
bidang hasil akhir ketika 2 hasil menengah dihitung. Diskusi berikut
menjelaskan persyaratan ini secara lebih rinci.
Nilai presisi ganda IEEE 754 dapat direpresentasikan
sebagai:
di mana s adalah tanda
eksponen (baik 0 atau 1), E adalah eksponen tidak bias yang
merupakan bilangan bulat yang berkisar dari 0 hingga 1023, dan M adalah
significand yang merupakan nilai 53-bit yang jatuh dalam kisaran 1 ≤ M <2 . Angka negatif dan nol dapat diabaikan
karena logaritma nilai-nilai ini tidak terdefinisi. Untuk tujuan diskusi ini, M tidak memiliki 53 bit presisi
karena dibatasi lebih besar dari atau sama dengan satu, yaitu bit yang
tersembunyi tidak diperhitungkan terhadap presisi (Perhatikan bahwa dalam
situasi di mana M kurang dari 1, nilainya adalah sebenarnya denormal dan karena
itu mungkin telah mengalami kehilangan presisi. Situasi ini berada di luar
cakupan artikel ini). Mengambil log dari
representasi ini dari nomor presisi ganda dan
menyederhanakan hasil sebagai berikut:
Hasil ini menunjukkan bahwa ketika mengambil basis-2 logaritma
angka, tanda eksponen nilai asli menjadi tanda logaritma, eksponen nilai asli
menjadi bagian integer dari significand dari logaritma, dan significand dari
nilai asli diubah menjadi bagian pecahan dari significand dari logaritma. Karena E adalah bilangan bulat dalam
rentang 0 hingga 1023, hingga 10 bit di sebelah kiri titik radix diperlukan
untuk mewakili bagian bilangan bulat dari logaritma. Karena M jatuh dalam kisaran 1 ≤ M
<2 , nilai log 2
M akan jatuh dalam kisaran 0 ≤ log 2 M <1 jadi
setidaknya 52 bit diperlukan di sebelah kanan titik radix untuk mewakili bagian
pecahan dari logaritma. Menggabungkan 10 bit di
sebelah kiri titik radix dengan 52 bit di sebelah kanan titik radix berarti
bahwa bagian penting dari logaritma harus dihitung setidaknya 62 bit presisi.
Pada prakteknya nilai M kurang dari membutuhkan 53 bit di sebelah kanan titik
radix dan nilai-nilai M kurang dari membutuhkan 54
bit di sebelah kanan titik radix untuk menghindari kehilangan presisi. Dengan menyeimbangkan kebutuhan ini untuk
presisi tambahan di sebelah kanan titik radix, eksponen kurang dari 512 hanya
membutuhkan 9 bit di sebelah kiri titik radix dan eksponen kurang dari 256
hanya membutuhkan 8 bit di sebelah kiri titik radix.
Bagian terakhir dari perhitungan eksponensial adalah menghitung
2 hasil antara . "Hasil antara"
terdiri dari bagian integer " I " ditambahkan ke bagian pecahan " F ". Jika hasil antara negatif maka sedikit penyesuaian diperlukan
untuk mendapatkan bagian pecahan positif karena kedua " I " dan " F " adalah angka
negatif.
Untuk
hasil antara positif:
Untuk hasil
antara negative
Dengan demikian bagian bilangan bulat dari hasil antara (" I " atau " I -1 ") ditambah bias menjadi eksponen
hasil akhir dan mengubah bagian pecahan positif dari hasil antara: 2 F atau 2 1+ F menjadi signifikanand dari hasil akhir. Untuk memasok 52 bit presisi ke hasil
akhir, bagian pecahan positif harus dipertahankan setidaknya 52 bit. Kesimpulannya, jumlah yang tepat dari bit presisi yang
diperlukan dalam significand dari hasil antara agak bergantung data tetapi 64
bit cukup untuk menghindari kehilangan presisi dalam sebagian besar perhitungan
eksponensialasi yang
melibatkan nomor presisi ganda .
Jumlah bit yang diperlukan untuk eksponen format presisi diperpanjang mengikuti dari persyaratan bahwa produk
dari dua nomor presisi ganda tidak boleh
meluap saat dihitung dengan menggunakan format diperpanjang. Eksponen yang mungkin terbesar dari nilai presisi ganda adalah 1023
sehingga eksponen produk terbesar yang mungkin dari dua nomor presisi ganda adalah 2047
(nilai 11-bit). Menambahkan dalam bias ke akun
untuk eksponen negatif berarti bahwa bidang eksponen harus setidaknya 12 bit
lebar.
Menggabungkan persyaratan ini: 1 bit untuk tanda, 12 bit untuk
eksponen bias, dan 64 bit untuk significand berarti bahwa format presisi
diperpanjang akan membutuhkan setidaknya 77 bit.
Pertimbangan teknik
menghasilkan definisi akhir dari format 80-bit (khususnya standar IEEE 754
membutuhkan rentang eksponen dari format presisi diperpanjang untuk mencocokkan
format format terbesar, quad
, presisi berikutnya yaitu 15 bit)
5) Bilangan Floating-Point 128-bit (Quad-precision)
presisi quadruple (atau presisi quad ) adalah format nomor komputer
bilangan floating-point- bin yang
menempati 16 byte (128 bit) dengan presisi lebih dari dua kali lipat presisi ganda 53-bit. Presisi quadruple
128-bit ini dirancang tidak hanya untuk aplikasi yang membutuhkan hasil yang
lebih tinggi dari presisi ganda, [1] tetapi juga, sebagai fungsi utama, untuk memungkinkan
penghitungan hasil presisi ganda lebih andal dan akurat dengan meminimalkan
overflow dan pembulatan kesalahan
dalam perhitungan menengah dan variabel awal. William Kahan , arsitek utama
standar floating point standar IEEE-754 asli mencatat, "Untuk saat ini format Extended 10-byte adalah kompromi yang dapat ditoleransi antara nilai
aritmatika ekstra-tepat dan harga penerapannya untuk berjalan cepat; segera dua
lebih banyak byte presisi akan menjadi lumayan, dan akhirnya format 16-byte ...
Itu jenis evolusi bertahap menuju presisi yang lebih luas sudah terlihat ketika
Standar IEEE 754 untuk Aritmatika Titik-mengambang dibingkai. Dalam IEEE 754-2008 format basis-2
128-bit secara resmi disebut sebagai binary128 .
Standar IEEE 754 menetapkan biner128 memiliki:
- Tanda
tangan : 1 bit
- Lebar
eksponen
: 15 bit
- Keakuratan
dan presisi
: 113 bit (112 tersimpan secara eksplisit)
Ini memberikan dari 33 hingga 36 angka presisi desimal yang signifikan. Jika string desimal dengan paling banyak 33
digit signifikan diubah menjadi representasi presisi-empat kali lipat IEEE 754,
dan kemudian dikonversi kembali ke string desimal dengan jumlah digit yang
sama, hasil akhir harus cocok dengan string asli. Jika jumlah presisi-quadiffle IEEE 754 diubah menjadi string
desimal dengan setidaknya 36 digit signifikan, dan kemudian diubah kembali ke
representasi presisi-quadruple, hasil akhir harus sesuai dengan angka aslinya.
[3]
Format ditulis dengan bit prospek implisit dengan nilai 1 kecuali
eksponen disimpan dengan semua nol. Jadi hanya 112 bit significand yang muncul dalam
format memori, tetapi ketepatan totalnya adalah 113 bit (sekitar 34 digit
desimal: log 10 (2 113 ) ≈
34.016 ). Bit-bit
tersebut ditata sebagai:
A binary256
akan memiliki presisi yang signifikan dari 237 bit (sekitar 71 digit desimal)
dan bias eksponensial 262143. Ekspektasi floating-point biner presisi-empat kali dikodekan
menggunakan representasi biner offset , dengan titik
nol offset menjadi 16383; ini juga dikenal
sebagai bias eksponen dalam standar IEEE 754.
- E min = 0001 16 - 3FFF 16 = −16382
- E maks = 7FFE 16 - 3FFF 16 = 16383
- Prediksi eksponen = 3FFF 16 = 16383
Jadi,
seperti yang didefinisikan oleh representasi biner offset, untuk mendapatkan
eksponen yang benar, offset 16383 harus dikurangkan dari eksponen yang
disimpan.
Eksponen
yang disimpan 0000 16 dan 7FFF 16 ditafsirkan secara
khusus.
Eksponen
|
Signifikan dan nol
|
Signifikan dan bukan nol
|
Persamaan
|
0000 16
|
(−1) signbit × 2 −16382
× 0.tanda khusus dan 2
|
||
0001 16 , ..., 7FFE 16
|
nilai normalisasi
|
(−1) signbit × 2 exponentbits
2 - 16383 × 1.significandbits 2
|
|
7FFF 16
|
NaN (tenang, memberi sinyal)
|
Nilai
sangat positif (subnormal) minimum adalah 2 −16494 ≈ 10 −4965
dan memiliki presisi hanya satu bit. Nilai normal positif minimum adalah 2 −16382 ≈ 3.3621 × 10 −4932 dan
memiliki presisi 113 bit, yaitu ± 2 −16494 juga. Nilai maksimum yang dapat diwakili adalah 2 16384 - 2 16271 ≈ 1,1897 × 10 4932 .
6)
Format IBM floating point
Angka floating point IBM diwakili oleh satu bit untuk tanda (S), 7
bit untuk eksponen, dan 24 bit untuk pecahan. Eksponen adalah basis 16 (bukan 2), dan memiliki bias 64.
Karena basis 16, fraksi mungkin memiliki hingga tiga nol terkemuka. Dengan cara ini, beberapa nilai eksponensial dapat
diasumsikan oleh fraksi, meningkatkan jangkauannya, dengan biaya presisi
tertentu. Normalisasi ke bit terkemuka tidak
mungkin dilakukan. Angka titik mengambang tidak
memiliki pelengkap (bukan komplemen satu atau dua). Mereka dalam format tanda-besarnya (tanda yang sedikit 31). Semua format floating-point IBM memiliki 7
bit eksponen dengan bias 64. Kisaran normal dari nomor yang
dapat diwakili adalah dari 16 −65 hingga 16 63 (sekitar
5.39761 × 10 −79 hingga 7.237005 × 10 75 ). Angka tersebut direpresentasikan sebagai rumus berikut: (−1) tanda
× 0. significand × 16 eksponen − 64 .
Ø KETEPATAN TUNGGAL
ditunjukkan di bawah ini:
IBM
32-Bit Floating Point Format
|
|||||||||||||||||||||||||||||||
S
|
Eksponen
|
Pecahan (Catatan: tiga bit paling
signifikan [23, 22, dan 21] mungkin semuanya nol).
|
|||||||||||||||||||||||||||||
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Angka terbesar yang dapat diwakilkan
S
|
Exp
|
Pecahan
|
|
0
|
111
1111
|
1111
1111 1111 1111 1111 1111
|
Bilangan normalized positif terkecil
S
|
Exp
|
Pecahan
|
|
0
|
000
0000
|
0001
0000 0000 0000 0000 0000
|
Nol
S
|
Exp
|
Pecahan
|
|
0
|
000
0000
|
0000
0000 0000 0000 0000 0000
|
Nol
(0,0) direpresentasikan dalam bentuk dinormalkan sebagai semua bit nol, yang
secara aritmatik nilainya +0,0 16 × 16 0 - 64 = +0 × 16 −64
≈ + 0,000000 × 10 −79 = 0. Diberikan signifikansi semua- bit nol,
kombinasi bit tanda positif atau negatif dan non-zero bias eksponen akan menghasilkan
nilai yang secara aritmatik sama dengan nol.
Tidak ada komentar:
Posting Komentar