Computer >> Máy Tính >  >> Lập trình >> lập trình C

Thêm hai số không có dấu bằng cách sử dụng các bit trong C ++.

Một số không dấu được biểu thị dưới dạng một luồng bit được viết ở dạng nhị phân.

Dạng nhị phân của 54 là 110110.

Thêm hai số bằng cách sử dụng bit, chúng tôi sẽ thêm dạng nhị phân của chúng bằng cách sử dụng logic cộng nhị phân.

Quy tắc bổ sung bit là -

  • 0 + 0 =0
  • 1 + 0 =1
  • 0 + 1 =1
  • 1 + 1 =0 với carry =1

Hãy lấy một ví dụ để thêm hai số,

Input: a = 21 (10101) , b = 27 (11011)
Output: 48 (110000)

Giải thích - 10101 + 11011 =110000. Chúng tôi sẽ thêm các bit bắt đầu từ bit ít quan trọng nhất. Và sau đó truyền sang bit tiếp theo.

Ví dụ

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

Đầu ra

The sum of 678 and 436 is 1114