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.

Agregando números binarios de 10 bits

Necesito 2 cadenas de caracteres (números binarios de 10 bits). Es fácil cuando sumo 1+0 0+0.
Pero ¿Cómo puedo modificar esto para la situación en la que necesitaré hacer uno de 11 bits?
Por ejemplo:
1010101010+1111111111=11010101001

Código:
i = MAX+1;
while (i!=0){
if ((str1[i – 1] == str2[i – 1]) && (str1[i – 1] == ‘0’)) {
str3[i] = ‘0’;
}
else if ((str1[i – 1] != str2[i – 1])) {
str3[i] = ‘1’;
}
else if ((str1[i – 1] == str2[i – 1]) && (str1[i – 1] == ‘1’)) {
str3[i] = ‘0’;
}
i–;
}
MAX=10

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para modificar el código existente para la adición de números binarios de 11 bits, necesitaría ajustar el valor de MAX a 11, ya que ahora está trabajando con 11 bits en lugar de 10. También tendría que asegurarse de que ambas cadenas de entrada tengan una longitud de 11 bits, y agregar ceros principales si es necesario.

    Luego, puede utilizar la misma lógica que antes para iterar a través de las cadenas y realizar la adición binaria, con la transferencia que se agrega al siguiente dígito. El código actualizado se vería algo así:

    #define MAX 11
    
    char str1[MAX+1] = "1010101010"; // cadenas de entrada
    char str2[MAX+1] = "1111111111";
    char str3[MAX+1] = ""; // cadena de salida
    int carry = 0;
    
    for (int i = MAX; i >= 0; i--) {
        int sum = (str1[i] - '0') + (str2[i] - '0') + carry;
        if (sum == 0 || sum == 1) {
            str3[i] = sum + '0';
            carry = 0;
        } else if (sum == 2) {
            str3[i] = '0';
            carry = 1;
        } else {
            str3[i] = '1';
            carry = 1;
        }
    }
    
    printf("Resultado: %s\n", str3); // cadena de salida del resultado binario
    

    Este código debería manejar correctamente la adición de números binarios de 11 bits y producir el resultado deseado: "11010101001".

Comments are closed.