Disclaimer - First of all my apologies if I have missed anything or didn't format something right, I am new to this platform and willt ake constructive criticism but please dont downvote me. I also understand that this code looks very bad and may frustrate some users but I am trying to get the basics down with C# before I move on to the likes of 2D arrays to code things like this.
The Problem -
When iterating through the if statements, the carry and result arrays don't give me the right answer for Binary Addition. How do I change them so that they give me the right answer?
This is for a binary calculator program
All arrays are set to the same length which is determined by user input eg.
Console.WriteLine("How many bits would you like to use?");
int arrayLengths = int.Parse(Console.ReadLine());
// all arrays lengths are set to = new int[arrayLengths];
-
for (int i = firstBinaryNumber.Length - 1; i > 0; i--)
{
if (firstBinaryNumber[i] == 0 && secondBinaryNumber[i] == 0 && carry[i] == 0)
{
carry[i - 1] = 0;
result[i] = 0;
}
if (firstBinaryNumber[i] == 0 && secondBinaryNumber[i] == 0 && carry[i] == 1)
{
carry[i - 1] = 0;
result[i] = 1;
}
if (firstBinaryNumber[i] == 0 && secondBinaryNumber[i] == 1 && carry[i] == 0)
{
carry[i - 1] = 0;
result[i] = 1;
}
if (firstBinaryNumber[i] == 0 && secondBinaryNumber[i] == 1 && carry[i] == 1)
{
carry[i - 1] = 1;
result[i] = 0;
}
if (firstBinaryNumber[i] == 1 && secondBinaryNumber[i] == 0 && carry[i] == 0)
{
carry[i - 1] = 0;
result[i] = 1;
}
if (firstBinaryNumber[i] == 1 && secondBinaryNumber[i] == 0 && carry[i] == 1)
{
carry[i - 1] = 1;
result[i] = 0;
}
if (firstBinaryNumber[i] == 0 && secondBinaryNumber[i] == 1 && carry[i] == 0)
{
carry[i - 1] = 0;
result[i] = 1;
}
if (firstBinaryNumber[i] == 1 && secondBinaryNumber[i] == 1 && carry[i] == 0)
{
carry[i - 1] = 1;
result[i] = 0;
}
if (firstBinaryNumber[i] == 1 && secondBinaryNumber[i] == 1 && carry[i] == 1)
{
carry[i - 1] = 1;
result[i] = 1;
}
}
The results I would expect, for example, can be summarised by this -
firstBinaryNumber = 101
secondBinaryNumber = 001
therefore
carry = 010
result = 110
However my actual results look like this -
firstBinaryNumber = 101
secondBinaryNumber = 001
carry = 000
carry = 100
Aucun commentaire:
Enregistrer un commentaire