【问题标题】:How does java " & " operator work? [duplicate]java“&”运算符是如何工作的? [复制]
【发布时间】:2014-01-17 16:28:51
【问题描述】:

有人能解释一下“&”运算符是如何工作的吗,例如下面的例子?结果是8。 在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html 状态下它是按位与,有人可以解释一下吗?

 public class JavaApplication6 {

 public void number() {
    int number = 9 & 30;
    System.out.println(number);
}

public static void main(String[] args) {
    JavaApplication6 j = new JavaApplication6();
    j.number();
}

}

【问题讨论】:

  • 将整数转换为它们的二进制表示并与它们。
  • @SotiriosDelimanolis:整数不会转换为二进制表示,它们已经以二进制形式存储,因为这是 CPU 管理它们的唯一方式。
  • @Jack 我的意思是让 OP 可以测试它。
  • 换句话说,找出二进制中的 9 和 30 是什么,然后注意两者都有“1”数字的位置。结果中这些数字将为“1”,其余数字为零。 (二进制值上的“AND”和“OR”的概念是编程的基础——你需要完全理解这个概念。)

标签: java


【解决方案1】:

它是按位与运算符。它采用两个操作数的二进制表示并逐位比较它们。当第一个操作数有一位为1第二个操作数为1时,结果对应的位为1,否则为0。

二进制的9是1001,二进制的30是11110。

  01001
& 11110
-------
  01000

结果 01000 是十进制的 8。

二元与运算符的作用类似于过滤器。它提取您需要的那些位的值,并将所有其他位设置为 0。

【讨论】:

    【解决方案2】:

    有人可以解释一下“&”运算符的工作原理吗,例如下面的示例?

    内部是这样的。

     0000000000001001  (9)
     0000000000011110  (30)
    --------------------
     0000000000001000 = 8 (Result)
    

    在内部,它将每个十进制表示转换为二进制表示并执行类似的操作,如果任何位为零,则该位的结果为零。当两个位都为 1 时,对应的位值为 1。

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2012-06-10
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多