Cómo utilizar operaciones bit a bit para implementar la suma y resta de enteros
La idea de las operaciones de bits se puede aplicar a muchos lugares. La siguiente es una breve introducción a las cuatro operaciones aritméticas de números enteros que utilizan operaciones de bits.
1. Suma de enteros
[cpp] Ver la copia pura Ver el fragmento de código en CÓDIGO derivado de mi fragmento de código
int Add(int a, int b)
{
for(int i = 1; i; i lt; lt; = 1)
if (b amp; i) p>
for(int j = i; j; j lt; lt; = 1)
if(a amp; j) a amp; = ~j; else {a |= j; break;}
Devuelve a;
}
Mi proceso de pensamiento es principalmente así: uso un 1 para realizar operaciones de bits Cuando , el 1 consecutivo más a la izquierda (comenzando desde el bit 0 hacia la izquierda) se convierte en 0, y el 0 más bajo en a se convierte en 1.
Sumar 1 a diferentes bits cuenta desde el bit correspondiente hacia la izquierda, mientras que el lado derecho permanece sin cambios.
Aquí hay otra idea en línea, creo que esta es mejor:
[cpp] Ver copia pura para ver el fragmento de código deducido de mi fragmento de código en CODE
int Add(int a, int b)
{
if(b == 0) return a; //no finaliza la operación sin redondear
int suma, llevar;
suma = a ^ b; //termina el primer paso de la suma sin redondear
llevar=(a amp; b) lt; finalice el segundo paso de redondear y desplazar hacia la izquierda
return Add(sum, carry // hacer recursividad, agregar
}