【发布时间】:2013-09-09 18:35:08
【问题描述】:
我有一个标识无效输入的长值,它应该在高 40 位中包含 0。所以每次我得到一个新的输入时,我都要比较它的高 40 位,以验证它们是否为 0,以确保它不是无效的。
long invalid_id = 0;
long input ; //some input
if ((input << 24) == id) {
// invalid
}
这就够了吗?
【问题讨论】:
-
你的意思是把“long invalid_id = 0;” ? “invalid”和“id”之间的空格可能会导致错误。
-
你在正确的轨道上,但是......试着想象你的整数(在纸上)被写成 64 个 1 和 0 的二进制数。左 40 位是您要比较的高位。当您使用
<<时,这会将所有内容都移到 left(新的 0 出现在右侧),其中一些高位会从纸上掉下来。 -
另外,如果
invalid_id是一个在整个程序中始终相同的常量,最好设为static final;您也可能希望将INVALID_ID设为大写,因为这是常量的常用约定。
标签: java bit-shift bits endianness