[英]Bitwise Operator | and + the same?
综观|
,它被描述为按位运算符OR
。 因此,在此代码示例中:
private int getColorRGB(int color) { // 255255255 would be white, 000255000 green, etc.
if (color < 0) return -1;
int r = color / 1000000 % 1000;
int g = color / 1000 % 1000;
int b = color % 1000;
if (r > 255 || g > 255 || b > 255) throw new IllegalArgumentException("RGB values cannot exceed 255.");
return (r >> 16) | (g >> 8) | b; // POINT OF INTEREST
}
我可以代替2 |
在用+
标记为POINT OF INTEREST
的行上,我仍然得到相同的输出。
该方法采用int rrrgggbbb
,因此255将为蓝色, 200200200
将为浅灰色, 200200200
。
所以,我的问题是; 两者有什么区别
a = 2; // binary 0x10
b = 2; // binary 0x10
c = a + b; // c = 4
c = a | b; // c = 2
|
是一点操作,并不等于+
有时它会给出相同的结果:例如2+1
和2|1
; 但这不是规则
|
“按位”或“取”表示两个数字中较大的对应位,而“ +
取两个对应的位相加,再取进一个进位,这意味着1+1
给出10
而1|1
仅停止为1
。 |
如果较大的参数在范围内,则永远不会导致超出范围;而如果两个参数的总和导致数字超出范围,则+
可能超出范围。 如果在两个数字中,对应的位不同,则仅在这种情况下|
用作+
因为在求和期间,进位永不产生。
请记住| 和+是2个不同的运算符。 话虽如此,有时它们可以具有相同的结果,例如1 * 1和1/1。 尽管它们具有相同的结果,但它们不会经过相同的过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.