use*_*761 2 java bit-manipulation
我的代码是
final int CONST_1 = 1010;
final int CONST_2 = 1011;
System.out.println("CONST_1 & CONST_2: " + Integer.toBinaryString(CONST_1 & CONST_2));
System.out.println("CONST_1 ^ CONST_2: " + Integer.toBinaryString(CONST_1 ^ CONST_2));
System.out.println("CONST_1 | CONST_2: " + Integer.toBinaryString(CONST_1 | CONST_2));
System.out.println("~CONST_1 : " + Integer.toBinaryString(~CONST_1));
Run Code Online (Sandbox Code Playgroud)
输出是
CONST_1 & CONST_2: 1111110010
CONST_1 ^ CONST_2: 1
CONST_1 | CONST_2: 1111110011
~CONST_1 : 11111111111111111111110000001101
Run Code Online (Sandbox Code Playgroud)
在我看来这是错的,它应该是:
CONST_1 & CONST_2: 1010
CONST_1 ^ CONST_2: 1
CONST_1 | CONST_2: 1011
~CONST_1 : 101
Run Code Online (Sandbox Code Playgroud)
请解释我为什么会有这样的结果.谢谢!
改变这个:
final int CONST_1 = 1010;
final int CONST_2 = 1011;
Run Code Online (Sandbox Code Playgroud)
对此:
final int CONST_1 = 0b1010;
final int CONST_2 = 0b1011;
Run Code Online (Sandbox Code Playgroud)
不要忘记默认情况下文字是十进制的.你显然希望它们是二进制的.
二进制文字需要Java 1.7.所以,如果没有,你可以这样做:
final int CONST_1 = Integer.parseInt("1010",2);
final int CONST_2 = Integer.parseInt("1011",2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |