按位或运算的一种应用方式

Posted _路上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按位或运算的一种应用方式相关的知识,希望对你有一定的参考价值。

 java.nio.Buffer.java源码中有如下代码:

static void checkBounds(int off, int len, int size) {
    if ((off | len | (off + len) | (size - (off + len))) < 0)
        throw new IndexOutOfBoundsException();
}

对 

if ((off | len | (off + len) | (size - (off + len))) < 0)

很好奇,如果我自己写,可能会写成

if (off < 0 || len < 0 || (off + len) < 0 || (size- (off + len)) < 0) 

 

按位或运算大家都知道,所以如果有一个数是负数,则结果也是负数。

 

如果有对按位或运算(|)不清楚的,可以参看这篇文章

 

以上是关于按位或运算的一种应用方式的主要内容,如果未能解决你的问题,请参考以下文章

使用按位或 0 对数字取底

使用按位或 0 对数字取底

巧妙运用 按位或“|” 运算

Java运算符:|=按位或并赋值示例[重复]

按位与&按位或|按位异或^

按位与按位或按位异或等等(& | ^ ~ >> <<)