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

时间:2017-01-28 08:23:15

标签: java bitwise-operators

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

2 个答案:

答案 0 :(得分:7)

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

           number  | decimal value | binary  
           --------- -----------------------
(decimal)  111     | 111           | 1101111 
(octal)    011     | 9             | 0001001     

这样:

   1101111
&     1001
   -------
   0001001

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);
}

ideone

上的代码

答案 1 :(得分:1)

补充yaitloutou的answer:整数文字可以用Java的不同基础表示:

  • 0,只是数字零(基数没关系,但指定为十进制)
  • 十进制:非零十进制数字,最后是十进制数字,例如20
  • 十六进制0x后跟一个或多个十六进制数字,例如0x14
  • octal 0后跟一个或多个八进制数字,例如024
  • 二进制0b后跟零和一,例如0b10100

下划线_可用于分隔数字,但会被忽略,例如0b0001_0100

有关详细信息,请参阅Java Language Specification 3.10.1