Java 二进制或运算符

Java 二进制或运算符,java,operator-keyword,bitwise-operators,Java,Operator Keyword,Bitwise Operators,你好,我有两个号码 int a= 6; int b = 20; 当我执行或操作时,即|操作时,它没有给出正确的结果 int result = a | b ; result=22但正确答案是2622是正确的: 6 is 0..000110 20 is 0..010100 6|20 is 0..010110 which is 22 如果使用十六进制数进行操作,并将结果转换为十六进制,则会得到26(十六进制): 22是正确的: 6 is 0..000110 20

你好,我有两个号码

int a= 6;
int b = 20;
当我执行
操作时,即
|
操作时,它没有给出正确的结果

int result = a | b ;
result=22
但正确答案是
26

22是正确的:

6     is  0..000110
20    is  0..010100
6|20  is  0..010110 which is 22
如果使用十六进制数进行操作,并将结果转换为十六进制,则会得到26(十六进制):

22是正确的:

6     is  0..000110
20    is  0..010100
6|20  is  0..010110 which is 22
如果使用十六进制数进行操作,并将结果转换为十六进制,则会得到26(十六进制):



为什么你认为正确答案是26?6=4+2;20=4+16-4在|是-正确答案是26不,正确答案是22,而不是26中只计算一次。像|运算符这样简单的东西实际上不太可能被破坏。编译器有bug,但不是那种——它会立即被注意到。为什么你认为正确的答案是26?6=4+2;20=4+16-4在|是-正确答案是26不,正确答案是22,而不是26中只计算一次。像|运算符这样简单的东西实际上不太可能被破坏。编译器有bug,但不是那种——它会立即被注意到。但当你在计算器(编程模式)上运行时,它会给出26@Rohitesh加法和按位OR是两个不同的运算符。@Jack如果你将20转换成二进制,你将得到0.0010万。。010100@Rohitesh
0010 0000
不是20。它是32。@Rohitesh:当你声明
intb=20
在Java中,编译器以10为基数取
20
,而不是以16为基数。但在计算器(编程模式)上执行时,它会给出26@Rohitesh加法和按位OR是两个不同的运算符。@Jack如果你将20转换成二进制,你将得到0.0010万。。010100@Rohitesh
0010 0000
不是20。它是32。@Rohitesh:当你声明
intb=20
在Java中,编译器采用以10为基数的
20
,而不是以16为基数。