我有一个很长的值来标识无效输入,它应该在高 40 位中包含 0。所以每次我得到一个新输入时,我都必须比较它的高 40 位以验证它们是否为 0 以确保它不是无效的。
long invalid_id = 0;
long input ; //some input
if ((input << 24) == id) {
// invalid
}
这就足够了吗?
最佳答案
您想使用右移运算符(有两个)并将值右移:
if ((input >>> 24) == 0) {
// high-order 40 bits are all 0.
}
或者,您可以简单地使用位掩码:
if ((input & 0xFFFFFFFFFF000000L) == 0) {
// high-order 40 bits are all 0.
}
请注意,>>>
会将 0 放入高位,而 >>>
会将 0 放入正数,将 1 放入负数。
关于java - 如何比较两个 long 的高 40 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704683/