Pertimbangkan representasi titik tetap yang dapat dianggap sebagai kasus degenerasi angka mengambang. Sangat mungkin untuk menggunakan komplemen 2 untuk angka negatif. Tetapi mengapa bit tanda diperlukan untuk angka floating point, bukankah seharusnya bit mantissa menggunakan komplemen 2's?
Juga mengapa bit eksponen menggunakan bias alih-alih representasi bertanda-besaran (mirip dengan bit mantissa) atau representasi komplemen 2's?
Pembaruan: Maaf jika saya tidak menjelaskannya. Saya mencari alasan bagaimana representasi floating point dibentuk. Jika tidak ada trade-off implementasi yang kuat antara alternatif, maka dapatkah seseorang menjelaskan aspek historis dari representasi floating point?
Dari Wikipedia:
Two's-melengkapi adalah representasi dari angka negatif yang kebetulan sangat nyaman. Itulah alasan utama untuk menggunakannya sama sekali.
Pasangan mantissa-eksponen adalah representasi dari angka floating point. Sebagian besar waktu ketika menggunakan angka floating point, Anda tidak melakukan aritmatika semata-mata pada mantissa atau hanya pada eksponen.
sumber
Anggapan yang salah. Itu tidak perlu. Saya cukup yakin saya telah bertemu format floating point yang menggunakan komplemen 2's untuk mantissa, tetapi saya harus menggali untuk nama.
Saya jauh dari spesialis dalam analisis numerik, tetapi saya mendapatkan bahwa menandatangani nol penting bagi mereka. Mungkin lebih mudah untuk memanipulasi daripada komplemen. Itu mungkin kriteria dalam pilihan untuk IEEE-754.
Sekali lagi itu adalah sesuatu yang tidak diperlukan dan beberapa telah melakukan hal yang berbeda.
Ini representasi yang lebih mudah untuk melakukan implementasi perangkat keras untuk serangkaian operasi yang dilakukan pada eksponen (dan di sini memiliki representasi untuk -0 tidak diinginkan).
Salah satu konsekuensi dari pilihan itu adalah bahwa Anda dapat menggunakan perbandingan bilangan bulat yang ditandatangani untuk membandingkan nomor FP jika Anda tidak peduli dengan NaN, yang mungkin merupakan kriteria untuk beberapa (fakta daripada NaN membutuhkan penanganan khusus membuat saya ragu itu bukan untuk IEEE-754).
sumber
IEEE 754 menggunakan tanda / besarnya, bukan komplemen dua atau komplemen seseorang.
Pelengkap dua memiliki kelemahan bahwa rentang positif dan negatif tidak identik. Jika semua pola bit valid, maka Anda memiliki angka x di mana Anda tidak dapat dengan mudah menghitung -x. Itu buruk. Alternatifnya adalah bahwa ada pola bit yang tidak valid, yang juga buruk. Di IEEE 754 tidak ada pola bit yang tidak valid untuk floating point 64 atau 32 bit, jadi Anda tidak perlu khawatir tentang itu.
Pelengkap seseorang akan membuat penggandaan / pembagian menjadi lebih kompleks (dengan magnitudo yang ditandatangani, Anda cukup menandai atau memperlakukan mantissa sebagai angka yang tidak ditandatangani). Untuk menambah dan mengurangi, saya benar-benar tidak ingin memikirkan menambah dan mengurangi komplemen seseorang, itu membuat kepala saya sakit.
sumber
Nol yang ditandatangani memberi peningkatan ekspresif yang mungkin berguna dalam perhitungan numerik. Halaman wikipedia ' Masuk nol ' mengatakan:
Salah satu desainer utama IEEE 754 floating point, WH Kahan adalah pendukung nol yang ditandatangani karena alasan ini. Pendapatnya kemungkinan akan membawa banyak bobot.
sumber
Saya pikir penting untuk memahami bahwa perhitungan floating-point menghasilkan nilai perkiraan , bukan nilai yang tepat . Yaitu, jika perhitungan titik-mengambang menghasilkan nilai yang dikodekan X, maka ini mewakili nilai ideal secara teoritis yang hampir pasti BUKAN X, tetapi berada dalam kisaran [X .. X + e) {di mana 'e' adalah ' mesin epsilon ', yaitu tidak ada angka titik-mengambang antara X dan X + e}. Lebih khusus lagi, titik-mengambang nol mewakili angka ideal yang mungkin tidak tepat nol, tetapi yang terlalu kecil untuk diwakili dengan nilai dikodekan titik mengambang-nol.
Mengingat bahwa, menggunakan representasi tanda-dan-magnitudo adalah cara yang memungkinkan pengkodean untuk 'mengingat' di sisi nol mana nilai ideal berada, positif atau negatif. Ini sangat penting dalam perhitungan kompleks tertentu (dalam arti 'a + bi') - fungsi kompleks-> seringkali 'bernilai banyak', jadi untuk perhitungan yang tepat sangat penting untuk memperhatikan lokasi 'pemotongan cabang'. Nol yang ditandatangani kemudian dalam arti menandai lokasi pemotongan cabang ini - perhitungan yang dilakukan pada sisi positif akan berbeda dari yang di sisi negatif.
sumber
Sebagian besar format floating-point mengambil keuntungan dari kenyataan bahwa, dalam sistem biner, nilai non-nol dengan eksponen non-minimum akan memiliki "1" sebagai bit paling signifikan dari mantissa. Jadi, dalam sistem dengan bidang 23-bit untuk mantissa, mantra angka positif tidak berkisar dari 0 hingga 8.388.607 tetapi sebaliknya dari 8.388.608 hingga 16.777.215. Mantra angka yang mungkin atau mungkin tidak berkisar antara -16.777.215 hingga -8.388.608 dan dari +8.388.608 hingga +16.777.215. Sementara dua komplemen adalah format numerik terbaik ketika diperlukan untuk memiliki perhitungan "lancar" melintasi nol, rentang terputus dari nilai mantissa berarti bahwa perhitungan tidak akan dapat beroperasi dengan lancar di nol apakah mereka menggunakan komplemen dua atau yang lain .
sumber