【发布时间】:2017-04-09 13:27:24
【问题描述】:
我对以下代码有疑问:
public class test {
public static void main(String args[]) {
byte x = 3;
x = (byte)~x;
System.out.println(x);
}
}
输出为:-4
【问题讨论】:
-
你明白什么是二元否定吗?你期望输出是什么?
-
3 在二进制世界中是 011。它的否定是 100,在基数 10 中等于 4,在 Java 中,它不是(~)32 位长的 011。
-
@Vinay,一个字节中011的否定是11111100,而不是100。
-
这就是为什么我补充说它将是一个 32 位否定