按位运算111&011 = 9,如何?

nav*_*dra 2 java bitwise-operators

按位操作111和011 在java中给出输出为9.怎么样?111和011应为011,即3.

yai*_*tou 7

您将数字指定为十进制和八进制,而不是您假设的二进制.

           number  | decimal value | binary  
           --------- -----------------------
(decimal)  111     | 111           | 1101111 
(octal)    011     | 9             | 0001001     
Run Code Online (Sandbox Code Playgroud)

所以:

   1101111
&     1001
   -------
   0001001
Run Code Online (Sandbox Code Playgroud)

1001 = 2^3 + 1 = 9

检查一下使用 Integer.toBinaryString

public static void main (String[] args) {
  System.out.println(
    Integer.toBinaryString(111));

  System.out.println(
    Integer.toBinaryString(011));

  System.out.println(111 & 011);
}
Run Code Online (Sandbox Code Playgroud)

关于ideone的代码

  • 文字"111"是一个小数,值为111.文字"011"是八进制,值为9 (2认同)