es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Realizar operaciones como sumar, restar, multiplicar, dividir y obtener el residuo entre 2 enteros con sus bytes.

Tengo los bytes de 2 enteros (digamos un entero de 32 bits), ¿es posible sumarlos utilizando los bytes?

Tengo algo así:

char b1[4], b2[4];
int a = 2311;
int b = 233134;
memcpy(b1, &a, 4);
memcpy(b2, &b, 4);

Mi pregunta es si existe algún algoritmo para sumar, multiplicar o restar números a partir de bytes, y el número de bytes del número no está fijo, puede ser de 32 bits, 64 bits, 128 bits.

Nota: no quiero ninguna biblioteca o marco de trabajo, solo C++.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible sumar, multiplicar o restar dos enteros accediendo y manipulando sus bytes individuales en C++. Un enfoque es realizar la operación byte por byte, comenzando desde el byte menos significativo (LSB) y propagando el acarreo si es necesario. Este método funciona para enteros de cualquier tamaño, siempre y cuando se conozca el número de bytes.

    Para la suma, puedes crear un bucle que recorra todos los bytes y utilizar el siguiente algoritmo:

    1. Inicializa una variable de acarreo en 0.
    2. Para cada byte, suma los bytes correspondientes de ambos números, junto con el acarreo del byte anterior.

    3. Si el resultado supera el valor máximo que puede ser representado por un byte, establece el acarreo en 1 y resta 256 (2^8) al resultado.

    4. Almacena los bits restantes del resultado en el byte correspondiente del búfer de salida.

    5. Continúa hasta que se hayan procesado todos los bytes.

    Para la multiplicación y la resta, se pueden diseñar algoritmos similares basados en el mismo enfoque byte por byte.

    Sin embargo, cabe destacar que realizar operaciones aritméticas a nivel de byte puede ser menos eficiente que utilizar los operadores aritméticos incorporados, especialmente para números grandes. Por lo tanto, se recomienda utilizar tipos de datos estándar siempre que sea posible y recurrir a la manipulación a nivel de byte solo cuando sea necesario (por ejemplo, en criptografía o programación de sistemas a nivel de bajo nivel).

Comments are closed.