所有的二进制代表

时间:2015-02-05 06:50:23

标签: java binary

我在破解编码采访书时遇到了一些例子。在位操作章节中,作者使用以下内容创建了全1二进制表示

int allOnes = ~0;

我只是想知道,为什么我们不能简单地做

int allOnes = -1;

1 个答案:

答案 0 :(得分:2)

你可以。让我们试一试,看看

System.out.println(Integer.toBinaryString(-1));
System.out.println(Integer.toBinaryString(~0));
System.out.println(~0);

输出(正如您可能已经猜到的那样)

11111111111111111111111111111111
11111111111111111111111111111111
-1

因为~0 -1JLS-15.15.5. Bitwise Complement Operator ~说(部分),

  

在运行时,一元按位补码表达式的值是操作数的提升值的按位补码。在所有情况下,~x等于(-x)-1。