1
有人可以解释这个java按位运算符的行为吗?按位运算符意外行为
System.out.println(010 | 4); // --> 12
System.out.println(10 | 4); // --> 14
谢谢!
有人可以解释这个java按位运算符的行为吗?按位运算符意外行为
System.out.println(010 | 4); // --> 12
System.out.println(10 | 4); // --> 14
谢谢!
第一个数字被解释为八进制。所以010 == 8
。
从出发,很容易看到,这
8d | 4d == 1000b | 0100b == 1100b == 12d
第二个数字被解释为小数,这产生
10d | 4d == 1010b | 0100b == 1110b == 14d
(凡d
表示的十进制数和b
表示二进制)
此外它与http://stackoverflow.com/questions/565634/integer-with-leading-zeroes ...有关,但我没有认为这是到目前为止的原因。谢谢。 – Rafael 2013-02-10 15:38:33
010创建八进制文字。 – 2013-02-10 15:33:17
这与按位操作无关,正如您自己的示例所示。 – 2013-02-10 15:36:09