Tambah dua nombor tidak bertanda menggunakan operasi bitwise dalam C++

WBOY
Lepaskan: 2023-08-27 17:53:06
ke hadapan
1110 orang telah melayarinya

Tambah dua nombor tidak bertanda menggunakan operasi bitwise dalam C++

Nombor tidak bertanda diwakili sebagai aliran bit yang ditulis dalam bentuk binari. Bentuk binari

54 ialah 110110.

Untuk menambah dua nombor menggunakan bit, kami akan menambahnya dalam bentuk binari menggunakan logik penambahan binari. Peraturan penambahan

bit ialah -

  • 0+0 = 0
  • 1+ 0 = 1
  • 0+1 = 1
  • 1+1 = 0, carry = 1

ambil contoh, Menambah dua nombor,

Input: a = 21 (10101) , b = 27 (11011)
Output: 48 (110000)
Salin selepas log masuk

Penjelasan - 10101 + 11011 = 110000. Kami akan menambah bit bermula dari bit yang paling tidak ketara. Kemudian sebarkan kepada orang seterusnya.

Contoh

#include <bits/stdc++.h>
#define M 32
using namespace std;
int binAdd (bitset < M > atemp, bitset < M > btemp){
   bitset < M > ctemp;
   for (int i = 0; i < M; i++)
      ctemp[i] = 0;
   int carry = 0;
   for (int i = 0; i < M; i++) {
      if (atemp[i] + btemp[i] == 0){
         if (carry == 0)
            ctemp[i] = 0;
         Else {
            ctemp[i] = 1;
            carry = 0;
         }
      }
      else if (atemp[i] + btemp[i] == 1){
         if (carry == 0)
            ctemp[i] = 1;
         else{
            ctemp[i] = 0;
         }
      }
      else{
         if (carry == 0){
            ctemp[i] = 0;
            carry = 1;
         }
         else{
            ctemp[i] = 1;
         }
      }
   }
   return ctemp.to_ulong ();
}
int main () {
   int a = 678, b = 436;
   cout << "The sum of " << a << " and " << b << " is ";
   bitset < M > num1 (a);
   bitset < M > num2 (b);
   cout << binAdd (num1, num2) << endl;
}
Salin selepas log masuk

Output

The sum of 678 and 436 is 1114
Salin selepas log masuk

Atas ialah kandungan terperinci Tambah dua nombor tidak bertanda menggunakan operasi bitwise dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan