Rumah >pembangunan bahagian belakang >C++ >Tambah dua nombor tidak bertanda menggunakan operasi bitwise dalam C++

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

WBOY
WBOYke hadapan
2023-08-27 17:53:061163semak imbas

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)

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;
}

Output

The sum of 678 and 436 is 1114

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!

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