


Bagaimanakah penambahan ketepatan dua boleh dicontohi menggunakan terapung ketepatan tunggal dalam sistem terbenam?
Oct 31, 2024 am 08:02 AMMeniru Aritmetik Ketepatan Berganda dengan Terapung Ketepatan Tunggal
Dalam bidang sistem terbenam dengan keupayaan titik terapung terhad, keperluan timbul untuk meniru struktur data ketepatan dua kali menggunakan struktur ketepatan tunggal. Artikel ini menangani cabaran untuk melaksanakan operasi penambahan dan perbandingan berketepatan dua kali menggunakan pasangan apungan ketepatan tunggal.
Perbandingan
Membandingkan dua nilai berganda yang dicontohi ialah urusan yang mudah. . Kami menggunakan susunan leksikografi, membandingkan unsur tuple secara berurutan. (d1.hi > d2.hi) ATAU ((d1.hi == d2.hi) DAN (d1.rendah > d2.rendah))
Tambahan
Meniru penambahan ketepatan berganda terbukti lebih rumit. Kita perlu menentukan asas untuk digunakan dan kaedah untuk mengesan pembawa.
Pemilihan Asas
FLT_MAX ialah pangkalan yang tidak sesuai kerana ia memperkenalkan isu limpahan dan aliran bawah yang tidak diingini. Sebaliknya, kami menggunakan format titik terapung dengan julat eksponen yang lebih besar tetapi ketepatan yang dikurangkan, dirujuk sebagai "double-float."
Carry Detection
Let d1 and d2 ialah dua nilai berganda yang ditiru untuk ditambah. Kami mula-mula menjumlahkan d1.hi dan d2.hi:
result.hi = d1.hi + d2.hi
Jika result.hi melimpah, kami tahu ada carry. Dalam kes ini, kami mengurangkan result.hi dengan 1 dan menambah 1 kepada result.low. Jika result.hi underflow, kami menambahnya sebanyak 1 dan tolak 1 daripada result.low.
if (result.hi overflowed) { result.hi--; result.low++; } else if (result.hi underflowed) { result.hi++; result.low--; }
Kami kemudian menambah d1.low dan d2.low kepada result.low:
result.low += d1.low + d2.low
Jika result.low melimpah, kami menambah result.hi sebanyak 1. Jika ia underflow, kami mengurangkan result.hi sebanyak 1.
if (result.low overflowed) { result.hi++; } else if (result.low underflowed) { result.hi--; }
Akhir sekali, kami mengembalikan hasil berganda yang dicontohi dengan (result.hi , result.low).
Metodologi ini, berdasarkan hasil kerja Dekker dan Kahan, membolehkan kami meniru penambahan ketepatan dua kali dengan ketepatan dan kecekapan yang munasabah dalam persekitaran yang terhad kepada aritmetik ketepatan tunggal.
Atas ialah kandungan terperinci Bagaimanakah penambahan ketepatan dua boleh dicontohi menggunakan terapung ketepatan tunggal dalam sistem terbenam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Gulc: Perpustakaan C dibina dari awal

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
