Saltar al contenido

Sumar números binarios en C ++

Solución:

Bueno, es un problema bastante trivial.

Cómo sumar dos números binarios en c ++. cuál es la lógica de esto.

Para sumar dos números binarios, ay b. Puede utilizar las siguientes ecuaciones para hacerlo.

suma = a xor b

llevar = ab

Esta es la ecuación para un Half Adder.

Ahora, para implementar esto, es posible que deba comprender cómo funciona un sumador completo.

suma = a xor b xor c

llevar = ab + bc + ca

Dado que almacena sus números binarios en una matriz int, es posible que desee comprender la operación bit a bit. Puede utilizar ^ para XOR, | operador para OR y operador para AND.

Aquí hay un código de muestra para calcular la suma.

for(i = 0; i < 8 ; i++){
   sum[i] = ((a[i] ^ b[i]) ^ c); // c is carry
   c = ((a[i] & b[i]) | (a[i] & c)) | (b[i] & c); 
}

Como preguntaba sobre C ++, se merece una respuesta de C ++. Utilice conjuntos de bits:

#include <bitset>
#include <iostream>

int main() {
  std::bitset<5> const a("1001");
  std::bitset<5> const b("1111");
  std::bitset<5> const m("1");
  std::bitset<5> result;
  for (auto i = 0; i < result.size(); ++i) {
    std::bitset<5> const diff(((a >> i)&m).to_ullong() + ((b >> i)&m).to_ullong() + (result >> i).to_ullong());
    result ^= (diff ^ (result >> i)) << i;
  }
  std::cout << result << std::endl;
}

Esto funciona para conjuntos de bits arbitrariamente largos.

Hay un error:

if(a[i]+b[i]+carry==1)  
{   
result[i]=1; 
carry=0;  
}  

También es posible que desee imprimir al revés

for(int j=6; j>=0; j--)  
{  
   cout<<result[j]<<" ";  
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *