Apa perbedaan antara operasi floating point presisi tunggal dan operasi floating presisi ganda?
Saya terutama tertarik pada istilah praktis terkait dengan konsol video game. Sebagai contoh, apakah Nintendo 64 memiliki prosesor 64 bit dan jika itu terjadi maka apakah itu berarti mampu melakukan operasi floating point presisi ganda? Dapatkah PS3 dan Xbox 360 melakukan operasi floating point presisi ganda atau hanya presisi tunggal dan secara umum adalah kemampuan presisi ganda yang digunakan (jika ada?).
floating-point
precision
processor
operations
tweetypi
sumber
sumber
Jawaban:
Catatan: Nintendo 64 memang memiliki prosesor 64-bit, namun:
Dari Webopedia :
Format presisi ganda IEEE sebenarnya bit bit presisi lebih dari dua kali lipat format presisi tunggal, serta rentang yang jauh lebih besar.
Dari standar IEEE untuk aritmatika floating point
Presisi tunggal
Representasi standar floating point presisi tunggal IEEE membutuhkan 32 bit kata, yang dapat direpresentasikan sebagai nomor dari 0 hingga 31, dari kiri ke kanan.
23 bit terakhir adalah fraksi 'F':
Nilai V yang diwakili oleh kata dapat ditentukan sebagai berikut:
0<E<255
kemudian diV=(-1)**S * 2 ** (E-127) * (1.F)
mana "1.F" dimaksudkan untuk mewakili angka biner yang dibuat dengan awalan F dengan terkemuka 1 implisit dan titik biner.V=(-1)**S * 2 ** (-126) * (0.F)
. Ini adalah nilai-nilai "tidak dinormalisasi".Khususnya,
Presisi ganda
Representasi standar floating point presisi ganda IEEE membutuhkan 64 bit kata, yang dapat direpresentasikan sebagai nomor dari 0 hingga 63, dari kiri ke kanan.
52 bit terakhir adalah fraksi 'F':
Nilai V yang diwakili oleh kata dapat ditentukan sebagai berikut:
0<E<2047
kemudian diV=(-1)**S * 2 ** (E-1023) * (1.F)
mana "1.F" dimaksudkan untuk mewakili angka biner yang dibuat dengan awalan F dengan terkemuka 1 implisit dan titik biner.V=(-1)**S * 2 ** (-1022) * (0.F)
ini adalah nilai "tidak dinormalisasi".Referensi:
Standar ANSI / IEEE 754-1985,
Standar untuk Aritmatika Binary Floating Point.
sumber
**
' is ExponentiationSaya membaca banyak jawaban tetapi sepertinya tidak ada yang menjelaskan dari mana kata double berasal. Saya ingat penjelasan yang sangat baik yang diberikan oleh seorang profesor Universitas yang saya miliki beberapa tahun yang lalu.
Mengingat gaya jawaban VonC, representasi floating point presisi tunggal menggunakan kata 32 bit.
Perwakilan:
(Hanya untuk menunjukkan, bit tanda adalah yang terakhir, bukan yang pertama.)
Sebuah ganda presisi floating point representasi menggunakan kata 64 bit.
Perwakilan:
Seperti yang Anda perhatikan, saya menulis bahwa mantissa memiliki, dalam kedua jenis, satu informasi sedikit lebih banyak dibandingkan dengan perwakilannya. Bahkan, mantissa adalah angka yang diwakili tanpa semua yang tidak signifikan
0
. Sebagai contoh,Ini berarti mantissa akan selalu dalam bentuk
0.α 1 α 2 ... α t × β p
di mana β adalah basis representasi. Tetapi karena fraksi adalah bilangan biner, α 1 akan selalu sama dengan 1, sehingga fraksi dapat ditulis ulang sebagai 1.α 2 α 3 ... α t + 1 × 2 p dan inisial 1 dapat secara implisit diasumsikan, membuat ruang untuk bit ekstra (α t + 1 ).
Sekarang, jelas benar bahwa ganda 32 adalah 64, tapi itu bukan dari mana kata itu berasal.
The presisi menunjukkan jumlah angka desimal yang benar , yaitu tanpa jenis kesalahan representasi atau pendekatan. Dengan kata lain, ini menunjukkan berapa banyak angka desimal yang dapat digunakan dengan aman .
Dengan demikian, mudah untuk memperkirakan jumlah angka desimal yang dapat digunakan dengan aman:
sumber
Oke, perbedaan mendasar pada mesin adalah bahwa presisi ganda menggunakan bit dua kali lebih banyak daripada tunggal. Dalam implementasi yang biasa, itu 32 bit untuk tunggal, 64 bit untuk ganda.
Tapi apa artinya ? Jika kita mengasumsikan standar IEEE, maka angka presisi tunggal memiliki sekitar 23 bit mantissa, dan eksponen maksimum sekitar 38; presisi ganda memiliki 52 bit untuk mantissa, dan eksponen maksimum sekitar 308.
Detailnya ada di Wikipedia , seperti biasa.
sumber
Untuk menambah semua jawaban indah di sini
Pertama-tama float dan double digunakan untuk representasi bilangan pecahan. Jadi, perbedaan antara keduanya bermula dari fakta dengan seberapa presisi mereka dapat menyimpan angka.
Jadi, pada dasarnya kita ingin tahu seberapa akurat nomor itu dapat disimpan dan apa yang kita sebut presisi.
Mengutip @Alessandro di sini
Float dapat secara akurat menyimpan sekitar 7-8 digit di bagian fraksional sementara Double dapat secara akurat menyimpan sekitar 15-16 digit di bagian fraksional
Jadi, float dapat menyimpan dua kali lipat jumlah bagian fraksional. Itulah mengapa Double dinamakan double the float
sumber
Mengenai pertanyaan "Bisakah ps3 dan xbxo 360 melakukan operasi floating point presisi ganda atau hanya presisi tunggal dan dalam penggunaan umum adalah kemampuan presisi ganda dimanfaatkan (jika ada?)."
Saya percaya bahwa kedua platform tidak mampu melakukan floating point ganda. Prosesor Cell asli hanya memiliki float 32 bit, sama dengan perangkat keras ATI yang menjadi dasar XBox 360 (R600). Cell mendapat dukungan floating point ganda nantinya, tapi saya cukup yakin PS3 tidak menggunakan chippery itu.
sumber
Pada dasarnya floating point aritmatika presisi tunggal berhubungan dengan angka-angka floating point 32 bit sedangkan presisi ganda berkaitan dengan 64 bit.
Jumlah bit dalam presisi ganda meningkatkan nilai maksimum yang dapat disimpan serta meningkatkan presisi (yaitu jumlah digit signifikan).
sumber
Semua telah menjelaskan dengan sangat rinci dan tidak ada yang bisa saya tambahkan lebih lanjut. Meskipun saya ingin menjelaskannya dalam Ketentuan Layman atau INGGRIS polos
.....
Suatu variabel, yang mampu menyimpan atau merepresentasikan "1.9" memberikan ketelitian yang lebih rendah daripada yang mampu menampung atau mewakili 1.9999. Fraksi ini dapat berjumlah perbedaan besar dalam perhitungan besar.
sumber
Presisi ganda berarti angka-angka membutuhkan waktu dua kali panjang kata untuk disimpan. Pada prosesor 32-bit, kata-katanya semua 32 bit, jadi ganda adalah 64 bit. Apa artinya ini dalam hal kinerja adalah bahwa operasi pada angka presisi ganda membutuhkan waktu lebih lama untuk dijalankan. Jadi Anda mendapatkan rentang yang lebih baik, tetapi ada sedikit keberhasilan. Hit ini dimitigasi sedikit oleh unit floating point perangkat keras, tetapi masih ada.
N64 menggunakan MIPS R4300i berbasis NEC VR4300 yang merupakan prosesor 64 bit, tetapi prosesor berkomunikasi dengan seluruh sistem melalui bus lebar 32-bit. Jadi, sebagian besar pengembang menggunakan angka 32 bit karena lebih cepat, dan sebagian besar game pada saat itu tidak membutuhkan ketepatan tambahan (sehingga mereka menggunakan float bukan double).
Ketiga sistem dapat melakukan operasi mengambang presisi tunggal dan ganda, tetapi mereka mungkin bukan karena kinerja. (Meskipun hampir semuanya setelah n64 menggunakan bus 32 bit jadi ...)
sumber
Pertama-tama float dan double digunakan untuk representasi bilangan pecahan. Jadi, perbedaan antara keduanya bermula dari fakta dengan seberapa presisi mereka dapat menyimpan angka.
Sebagai contoh: Saya harus menyimpan 123.456789 Seseorang mungkin dapat menyimpan hanya 123.4567 sementara yang lain mungkin dapat menyimpan 123.456789 yang tepat.
Jadi, pada dasarnya kita ingin tahu seberapa akurat nomor itu dapat disimpan dan apa yang kita sebut presisi.
Mengutip @Alessandro di sini
Presisi menunjukkan jumlah digit desimal yang benar, yaitu tanpa kesalahan representasi atau aproksimasi. Dengan kata lain, ini menunjukkan berapa banyak angka desimal yang dapat digunakan dengan aman.
Float dapat secara akurat menyimpan sekitar 7-8 digit di bagian fraksional sementara Double dapat secara akurat menyimpan sekitar 15-16 digit di bagian fraksional
Jadi, ganda dapat menyimpan dua kali lipat jumlah bagian pecahan seperti float. Itulah mengapa Double dinamakan double the float
sumber
Menurut IEEE754 • Standar untuk penyimpanan titik apung • Standar 32 dan 64 bit (presisi tunggal dan presisi ganda) • Masing-masing 8 dan 11 bit eksponen • Format yang diperluas (baik mantissa dan eksponen) untuk hasil antara
sumber
Nomor presisi tunggal menggunakan 32 bit, dengan MSB menjadi bit tanda, sedangkan angka presisi ganda menggunakan 64 bit, MSB menjadi bit tanda
Presisi tunggal
SEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
Presisi ganda:
SEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
sumber