Pregunta

Tengo dos cadenas:

string a = "00001"; /* which is decimal 1 I've converted with next string:
string a = Convert.ToString(2, 2).PadLeft(5, '0'); */
string b = "00010";

Quiero realizar la adición binaria entre los dos por lo que la respuesta será 00011 (3).

¿Fue útil?

Solución

System.Convert debe ser capaz de hacer el trabajo por usted

int number_one = Convert.ToInt32(a, 2);
int number_two = Convert.ToInt32(b, 2);

return Convert.ToString(number_one + number_two, 2);

(puede que tenga que afinar las cuerdas de un bit)

Otros consejos

Usted lo hace del mismo modo que lo haría en papel. Empezar desde la derecha, izquierda. si A [i] + B [i] + llevar> = 2, carry permanece 1 y seguir adelante. Si no, escribir A [i] + B [i] + transportar y fijar carry a 0.

a = "00001"; b = "00010";

carry = 0; una [4] + b [4] + llevar a = 1, escribir 1, establecer carry = 0: 00001

a [3] + b [3] + llevar a = 1, escribir 1, establecer carry = 0: 00011

Y así sucesivamente.

private static bool[] BinaryAdd(bool[] originalbits, long valuetoadd)
    {
        bool[] returnbits = new bool[originalbits.Length];

        for (long i = 0; i <= valuetoadd - 1; i++)
        {
            bool r = false; //r=0
            for (long j=originalbits.Length-1;j<=originalbits.Length;j--)
            {
                bool breakcond = false;
                bool o1 = originalbits[j];
                if (r == false)
                {
                    if (o1 == false) { o1 = true; breakcond = true; }//break
                    else if (o1 == true) { o1 = false; r = true; }
                }
                else
                {
                    if (o1 == false) { o1 = true; breakcond = true; }//break
                    else if (o1 == true) { o1 = false; r = true; }
                }

                originalbits[j] = o1;
                if (breakcond == true)
                {
                    break;
                }
            }

        }
        returnbits = originalbits;

        return returnbits;
    }

Yo recomendaría a analizar los datos enteros y luego la adición de ellos, a continuación, dar salida al resultado como binario.

Muy fácil -. Escribir una tabla de consulta para 'adición' de caracteres binarios, no se olvide de llevar si es necesario, y me envía el 50% del crédito que se obtiene por el trabajo

var sum = Convert.ToString(Convert.ToInt32("00010", 2) + Convert.ToInt32("00001", 2), 2).PadLeft(5, '0');
  

"00011"

PadLeft no es realmente necesario, pero si las cuerdas tienen longitud diferente que obtendría un mismo formato. Ejemplo:

var sum = Convert.ToString(Convert.ToInt32("0000010", 2) + Convert.ToInt32("001", 2), 2).PadLeft(5, '0');
  

"00011"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top