繁体   English   中英

按位运算符| 和+一样?

[英]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+12|1 但这不是规则

| “按位”或“取”表示两个数字中较大的对应位,而“ +取两个对应的位相加,再取进一个进位,这意味着1+1给出101|1仅停止为1 | 如果较大的参数在范围内,则永远不会导致超出范围;而如果两个参数的总和导致数字超出范围,则+可能超出范围。 如果在两个数字中,对应的位不同,则仅在这种情况下| 用作+因为在求和期间,进位永不产生。

请记住| 和+是2个不同的运算符。 话虽如此,有时它们可​​以具有相同的结果,例如1 * 1和1/1。 尽管它们具有相同的结果,但它们不会经过相同的过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM