繁体   English   中英

在整数之间使用按位AND运算符的好处?

[英]Benefit of using bitwise AND operator between integers?

我在看一些类似的代码:

public int someMethod(String path, int maxCallers) {

        int hash = path.hashCode();
        int caller = (hash & Integer.MAX_VALUE) % maxCallers;
        return caller;
    }

此方法根据路径返回要调用的调用者。 如果maxCallers值为4,则调用者值应在0-3之间。 现在,在这里我不了解使用hash & Integer.MAX_VALUE的用途。 我能想到的一个原因是程序员想要一个正数,因为哈希码可以是负数,但是我认为我的理解是错误的。 有人可以在这里解释按位AND运算符的用法。

您的假设是正确的。 如果哈希为负,则删除整数的符号。 Integer.MAX_VALUE AND运算会从整数中删除符号位。 请注意,这与获取整数的绝对值不同:

int hash = -1;
int caller = (hash & Integer.MAX_VALUE) % 4;  // returns 3

int hash = -1;
int caller = Math.abs(hash) % 4;  // returns 1

暂无
暂无

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

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