由于符号扩展,上述功能无效并返回-1。因此,我想知道是否有办法只获得较低的32位,即使长数为负数。
答案 0 :(得分:7)
使用L
后缀指定long
字面值:0x00000000ffffffffL
。
答案 1 :(得分:3)
或许0x00000000FFFFFFFFL
(请注意最后的L
,long
的{{3}}。
答案 2 :(得分:2)
这似乎工作正常:
final long mask = 0x00000000FFFFFFFFL;
final long val = Long.MAX_VALUE;
final long masked = val & mask;
System.out.println(masked);
输出:4294967295