Dalam
topik sebelumnya, kami mempertimbangkan format baru untuk mewakili angka floating-point desimal, yang kami sebut format decimal-binary campuran (SDDF).
Format ini memungkinkan Anda untuk melakukan perhitungan aritmatika di komputer tanpa menggunakan BCD dengan akurasi yang sama seolah-olah perhitungan dilakukan secara manual.
Ingat bahwa format desimal-biner campuran (SDDF) adalah format representasi kode biner untuk angka floating-point desimal, di mana bilangan bulat mantissa adalah setara biner dari nilai desimalnya, dan eksponen adalah ekuivalen biner dari kekuatan 10. Angka sebenarnya dalam SDF direpresentasikan sebagai
dimana
dan e adalah bilangan bulat biner. Setara biner dari angka desimal adalah kode biner dari angka desimal ini dalam format yang dipilih. Setara desimal dari angka biner adalah kode desimal dari angka biner ini.
Mari kita bandingkan properti dasar angka floating point, yang disajikan dalam standar IEEE754 dan SDDF. Untuk kesederhanaan, pertimbangkan kata mesin 16-bit. Inilah yang disebut format
setengah presisi . Hasil perbandingan dapat dengan mudah diskalakan untuk kasus format pertukaran presisi tunggal dan ganda.
Kami membagi kata biner 16-bit ke dalam bidang-bidang berikut: S, e, m. Di mana S-digit dari tanda angka, e - 5 bit dari eksponen yang dipindahkan, m - 10 bit dari ekuivalen biner dari mantissa desimal dari angka tersebut. Nilai biner maksimum dari eksponen offset yang tercatat dalam register 5-bit akan sama dengan emax = 11111, atau dalam bentuk desimal emax = 31. Offset dalam hal ini adalah 15.
Jadi
1 . Jumlah mantissa dalam IEEE754 berisi bagian pecahan dari nomor mantissa.
Nomor mantissa di SDDF adalah bilangan bulat biner.2 . Mantisa IEEE yang dinormalisasi dalam bentuk yang tidak dibungkus terlihat seperti 1.xxxxxxxxxx. Di mana x adalah digit biner.
Karena mantissa dinormalisasi, seluruh bagiannya dalam bentuk yang tidak dibungkus selalu sama dengan 1. Unit ini tidak dapat disimpan dalam memori mesin. Jadi, dalam bentuk yang tidak dibongkar, dengan mempertimbangkan unit virtual, mantissa akan memiliki 11 bit.
Mantera yang dinormalisasi dalam SDDF adalah bilangan bulat biner yang setara dengan angka desimal, yang dalam kasus kami diwakili oleh tiga digit: UXX. Di mana U adalah digit desimal tidak sama dengan nol. X adalah angka desimal apa pun.
Jumlah desimal maksimum 1023 dapat direpresentasikan dalam 10 bit mantissa. Semua bilangan bulat kurang dari 1023 dapat dijamin diwakili oleh 10 bit. Oleh karena itu, semua bilangan bulat desimal dengan mantissa β€ 999 dapat secara tepat diwakili oleh 10 bit mantissa.3 . Dalam IEEE754, maksimum mantissa biner yang dinormalisasi adalah Mmax = 1.1111111111 = 1.9990234375
Jumlah digit yang valid yang dapat diwakili oleh mantissa 11-bit biner
adalah 3 .
Mantissa desimal dinormalisasi maksimum dalam SDDF adalah Mmax = 999 atau biner Mmax = 1 111 100 111. Setara desimal dari mantissa terdiri dari 3 digit desimal. Oleh karena itu, mantissa tiga digit dalam contoh kami secara akurat direpresentasikan dalam SDDF 3 dalam digit desimal yang signifikan.4 . Dalam IEEE754, nilai mantissa dinormalisasi minimum, dengan emin = 0, akan menjadi: Mmin = 1.0
Mantera dinormalisasi minimum di SDDF, pada emin = 0, sama dengan angka desimal Mmin = 100. Atau dalam bentuk biner Mmin = 0001100100.5 . Angka desimal positif maksimum yang dapat ditulis dalam format IEEE754 dengan eksponen bias adalah
Fmax = 2 ^ emax * Mmax = 2 ^ 31 * 1.9990234375 = 4292870144 = 4.292870144 * 10 ^ 9. Namun, dalam standar, angka maksimum adalah angka Fmax = 2 ^ emax = 2 ^ 31 = 4294967296 = 4.294967296 * 10 ^ 8. Angka> 2 ^ 31 dianggap sama dengan plus tak terhingga.
Angka desimal positif maksimum yang dapat ditulis secara akurat dalam format SDDF dengan eksponen yang bias adalah
Fmax = 10 ^ emax * Mmax = 10 ^ 31 * 999 = 9.99 * 10 ^ 336 . Kisaran perkiraan angka yang dinormalisasi yang dapat direpresentasikan dalam format IEEE adalah
Fmax / Fmin = 2 ^ 31 = 4294967296 = 4.294967296 * 10 ^ 8
Kisaran angka pastinya yang dapat direpresentasikan dalam format SDDF akan sama dengan
Fmax / Fmin = 9,99 * 10 ^ 317 . Langkah mengubah angka biner di IEEE dengan eksponen offset (emin = 0) adalah:
h = 0,0000000001 = 2 ^ -10 = 0,0009765625
Langkah mengubah angka desimal di SDDF dengan eksponen bergeser (emin = 0) adalah:
h = 00001100100 = 1008 . Dalam IEEE754, dengan eksponen yang bias, jika e = 0, maka semua angka yang <1,0 adalah di bawah normal. Semakin kecil angka subnormal, semakin kurang akurat mewakili ekivalen desimalnya. Algoritma khusus diperlukan untuk menyandikan angka subnormal ke dalam format pertukaran, mendekode dari format pertukaran, serta jebakan khusus untuk menentukan angka subnormal selama operasi aritmatika.
Tidak ada angka subnormal di SDDF. Semua angka diwakili dengan akurasi, dalam kasus kami, hingga 3 digit signifikan.9 . Dengan eksponen yang tidak bias, angka desimal positif dinormalisasi maksimum yang dapat ditulis dalam format IEEE754 adalah
Fmax = 2 ^ emax * Mmax = 2 ^ 15 * 1.9990234375 = 65504. Namun, dalam standar, angka maksimum adalah angka Fmax = 2 ^ emax = 2 ^ 15 = 32768. Angka> 32768 dianggap sama dengan ditambah tak terhingga.
Dengan eksponen yang tidak bias, angka desimal positif maksimum yang dapat ditulis dalam SDDF akan sama dengan
Fmax = 10 ^ emax * Mmax = 999 * 10 ^ 15 = 9.99 * 10 ^ 1710. Dengan eksponen yang tidak bias, angka desimal positif dinormalisasi minimum dalam format IEEE754 akan menjadi Fmin = 1.0 * 2 ^ -15 =
3.0517578125 * 10 ^ -5.
Dengan eksponen yang tidak bias, angka desimal positif dinormalisasi minimum yang dapat ditulis dalam format SDDF adalah Fmin = 100 * 10 ^ -15 = 10 ^ -1311 . Dengan eksponen yang tidak bias, langkah desimal setara biner minimum di IEEE adalah:
h = 0,0000000001 * 2 ^ -15 = 2 ^ -25 = 3.0517578125 * 10 ^ -5
Dengan eksponen yang tidak bias, langkah minimum dalam SDDF bertepatan dengan angka minimum dan sama dengan:
h = 001100100 * 10 ^ -15 = 10 ^ -1312 . Dalam IEEE754, fungsi ketergantungan nilai ekuivalen desimal dari angka Fd pada nilai binernya tidak seragam, karena untuk mengubah dengan 1 digit paling signifikan dari mantissa desimal dari angka, sebagai aturan, jumlah beberapa h sama dengan mesin Ζ diperlukan.
Jadi, misalnya, jika e = 0, untuk Fd1 = 1.0 = 1.0000000000 dan Fd2 = 1.1β1.0001100110 kita akan memiliki
Fd2- Fd1 = 1.0001100110 -1.0000000000 = 0,0001100110 = 0,099609375
0,0001100110 / jam = 0,0001100110 / 0,0000000001 = 1100110 = 102 = Ζ
Dalam SDDF, fungsi ketergantungan nilai ekuivalen desimal dari angka Fd pada nilai binernya seragam. Setiap perubahan dalam h dari ekuivalen biner dari angka desimal mantissa memerlukan perubahan dalam 1 bit paling tidak signifikan dari ekivalen desimal dari angka tersebut. Di sini mesin Ζ = 1. Sungguh.
Jika e = 0,
Fd1 = 100 = 0001100100
Fd2 = 200 = 0011001000
Fd2- Fd1 = 0011001000-0001100100 = 0001100100 = 100 = hSebagai kesimpulan, kami menyajikan karakteristik utama dari representasi bilangan real dalam standar IEEE754 dan SDDF untuk format pertukaran, yang terdiri dari 32 bit (presisi tunggal dalam standar IEEE754).
Untuk IEEE754, bit kata mesin presisi tunggal dialokasikan sebagai S - 1 bit dari kode tanda, e - 8 bit dari eksponen bias, m - 23 bit mantissa eksplisit. Dibongkar, m = 24.
Untuk IEEE754:Koefisien perpindahan eksponensial adalah 127 emax = 127. Urutan tidak bias dari bilangan dinormalisasi terkecil dengan M = 1.0 adalah p = e-127 + 1 = -126. Angka <2 ^ -126 dianggap subnormal.
Angka dinormalisasi minimum adalah Fmin = 1.0 * 2 ^ -126 = 1.1754943508222875079687365372222e-38
Jumlah dinormalisasi maksimum
Fmax = 2 ^ 127 = 1,7014118346046923173168730371588e + 38
Angka yang melebihi 2 ^ 127 dianggap tak terhingga positif.
Untuk SDDF, digit dari kata mesin didistribusikan sebagai berikut: S - 1 digit, e - 7 bit, m - 24 bit. Koefisien perpindahan eksponensial adalah 63. Lalu
emax = 64
Mmax = 9999999
Fmax = 9999999 * 10 ^ 64 = 9.999999 * 10 ^ 70
Fmin = 1.000.000 * 10 ^ -63 = 10 ^ -57
Ketepatan representasi angka desimal nyata adalah 7 angka desimal yang signifikan.