【发布时间】:2014-04-02 15:58:45
【问题描述】:
& 运算符如何处理数字? 例如:
x = 8 & 4;
答案是 0。
如何在不使用 java 或任何其他程序的情况下找到答案?
【问题讨论】:
-
@timrau 不,甚至没有关闭.. 这是按位数学,“重复”讨论了
&&如何短路而&没有。
标签: java operators bitwise-operators
& 运算符如何处理数字? 例如:
x = 8 & 4;
答案是 0。
如何在不使用 java 或任何其他程序的情况下找到答案?
【问题讨论】:
&& 如何短路而 & 没有。
标签: java operators bitwise-operators
不使用Java将数字转换成二进制格式也能找到答案:
4 = 0100
8 = 1000
如果你对每个位执行 AND 操作,你会得到:
0 & 1 = 0
1 & 0 = 0
0 & 0 = 0
0 & 0 = 0
这就是为什么它是零。
【讨论】:
Java 有三种“与”运算符——逻辑运算符&&,按位运算符&,以及& on booleans,不会短路. Java 编译器可以通过检查操作数的类型来区分运算符的种类。
位运算符对其操作数进行二进制表示,对每个位执行“与”运算,并将结果作为数字返回。
对于 4 和 8,按位“与”为零,因为它们没有共同的 1 位:
00000100 -- 8
00001000 -- 4
--------
& 00000000 -- 0
对于其他数字,例如 22 和 5,结果会有所不同:
00010110 -- 22
00000101 -- 5
--------
& 00000100 -- 4
【讨论】:
& 是按位与运算符... 8 和 4 的二进制值是
8 = 1000
4 = 0100
如果您知道 AND 运算符的工作原理,那么您就知道了
1 & 0 = 0;
所以按位与后,全是0
【讨论】: