2012-12-13 68 views

回答

6

您正在打印的值不是byte類型。它是類型int

~(按位不)運算符未定義爲byte,但它是用於int。你的代碼有一個隱含的擴展轉換爲int。您的代碼大致相當於這個版本使用顯式轉換:

int temp = ~((int)var); 
Console.WriteLine("{0}", temp); 

位運算符不操作反轉位給結果111....111(基數爲2)。這在two's complement表示中具有值-1。


如果你想要得到的結果是與價值255字節,你必須添加一個明確的轉換:

byte x = 0; 
byte result = (byte)~x; 
+2

+1尼斯和明確的解釋。沒有'Console.WriteLine(byte)'重載。 –

+0

謝謝,我搜索了這個簡單解決方案的'世界'! –