Maison > développement back-end > C++ > Ajouter deux nombres non signés à l'aide d'opérations au niveau du bit en C++

Ajouter deux nombres non signés à l'aide d'opérations au niveau du bit en C++

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-08-27 17:53:06
avant
1304 Les gens l'ont consulté

Ajouter deux nombres non signés à laide dopérations au niveau du bit en C++

Un nombre non signé représenté sous forme de flux binaire écrit sous forme binaire. La forme binaire de

54 est 110110.

Pour ajouter deux nombres à l'aide de bits, nous les ajouterons sous forme binaire en utilisant la logique d'addition binaire. La règle de l'addition de

bits est -

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

Prenons un exemple, En additionnant deux nombres,

Input: a = 21 (10101) , b = 27 (11011)
Output: 48 (110000)
Copier après la connexion

Explication - 10101 + 11011 = 110000. Nous ajouterons des bits en commençant par le bit le moins significatif. Ensuite, passez à la personne suivante.

Exemple

#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;
}
Copier après la connexion

Sortie

The sum of 678 and 436 is 1114
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal