我有二進制數,我需要:取反和增值
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.是否有邏輯錯誤或代碼仍然不夠好? –
我更新了代碼,它現在可以正常工作 –
謝謝,問題解決了。 –