Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sistem Nombor Binari - Limpahan penambahan aritmetik dalam C/C++?

Sistem Nombor Binari - Limpahan penambahan aritmetik dalam C/C++?

PHPz
PHPzke hadapan
2023-08-26 22:33:011026semak imbas

Sistem nombor pelengkap

2 digunakan secara meluas dalam seni bina komputer.

Sistem nombor pelengkap N-bit 2 boleh mewakili nombor dari -2n-1 hingga 2n-1-1

4 digit boleh mewakili nombor dari (-8 hingga 7)

5 digit boleh mewakili nombor dari (-16 hingga 15) Nombor-nombor berada dalam sistem pelengkap 2.

Limpahan berlaku sebagai tambahan apabila 2 nombor pelengkap 2 N-bit 2 dilampirkan dan jawapannya terlalu besar untuk dimuatkan dalam kumpulan N-bit tersebut.

Komputer mengandungi daftar tetap N-bit. Hasil penambahan dua nombor N-digit akan menjadi nombor N+1-digit terbesar.

Membawa bendera menyimpan bit tambahan. Tetapi pembawaan tidak selalu menunjukkan limpahan.

Pengesanan limpahan

Apabila -

  • hasil tambah dua nombor negatif adalah positif atau

  • hasil tambah dua nombor negatif adalah negatif.

Oleh itu, limpahan boleh dikesan dengan mengesahkan bit paling ketara (MSB) kedua-dua operan dan hasilnya. Walau bagaimanapun, daripada melaksanakan pembanding 3-bit, limpahan boleh dikesan dengan mengesahkan output bawa dan bawa daripada MSB. Kami menganggap penambahan N-bit bagi nombor pelengkap 2.

二进制数系统 - C/C++中的算术加法溢出?

Limpahan berlaku apabila input bawa tidak sama dengan output bawa. Ungkapan limpahan di atas boleh dibincangkan daripada analisis berikut.

二进制数系统 - C/C++中的算术加法溢出?

Dalam gambar pertama, bit paling ketara daripada dua nombor ialah 0, menunjukkan bahawa ia adalah nombor positif. Di sini, jika input pembawa ialah 1, kita mendapat bit paling ketara daripada keputusan itu ialah 1, menunjukkan bahawa hasilnya adalah negatif (limpahan), dan output bawa ialah 0. Bawa masuk tidak sama dengan bawa, jadi limpahan berlaku.

Dalam gambar kedua, bit yang paling ketara daripada dua nombor ialah 1, menunjukkan bahawa ia adalah nombor negatif. Di sini, jika input bawa ialah 0, kita mendapat bit yang paling ketara daripada keputusan itu ialah 0, menunjukkan bahawa hasilnya adalah positif (limpahan), dan output bawa ialah 1. Bawa masuk tidak sama dengan bawa, jadi limpahan berlaku.

Oleh itu, bawa masuk dan keluar MSB sudah cukup untuk mengesan limpahan.

二进制数系统 - C/C++中的算术加法溢出?

Gerbang XOR di atas boleh digunakan untuk mengesan limpahan.

Atas ialah kandungan terperinci Sistem Nombor Binari - Limpahan penambahan aritmetik dalam C/C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam