У меня есть двоичное число, и мне нужно:Отрицание и увеличение значения в двоичной системе
1) свести на нет все байты
2) добавить 1 к отрицанию номер
Итак, я написал :
public string u2_number_plus = "1001";
public string u2_number_minus = "";
public string binToU2()
{
int length = u2_number_plus.Length;
int temp = 1;
//negate all bytes
for (int a = 0; a < length; a++)
{
if (u2_number_plus[a] == '1')
u2_number_minus += '0';
else
u2_number_minus += '1';
}
//add 1 to my new (because negate) number
for (int b = length - 1; b >= 0; b--)
{
if (u2_number_minus[b] == 0 && temp == 1)
{
u2_number_minus = u2_number_minus.Replace(u2_number_minus[b], '1');
temp = 0;
}
else if (u2_number_minus[b] == 1 && temp == 1)
{
u2_number_minus = u2_number_minus.Replace(u2_number_minus[b], '0');
temp = 1;
}
else
break;
}
return u2_number_minus;
}
Моя функция binToU2() возвращает отрицание, но не значение приращения. Если входные данные 1001, я должен получить 0111, но функция возвращает только 0110. Где я сделал ошибку?
Да, вы правы, но теперь функция преобразует все число в 1111. Есть ли логическая ошибка или код еще недостаточно? –
Я обновил код, теперь он корректно работает –
Спасибо, проблема решена. –