java – Bitwise“&”一长?

我想从多个类型中获取最少32位,因此我执行按位操作“&”位数掩码为0xFFFFFFFF,但结果不正确,仍然包含其他位。

例如:

long a = 0x1234567890ab; 
long b = (a & 0xffffffff);

我期望b的值为0x567890ab

但实际上仍然是0x1234567890ab

尝试这个:

long a = 0x1234567890ab;  
long b = (a & 0xffffffffL);

0xffffffff是int类型的字面值,用于执行&长久以来,它被提升为输入长度为sign extension,因此它变成0xffffffffffffffff。为了避免标志扩展,您需要将其写为long:0xffffffffL类型的文字。

http://stackoverflow.com/questions/5017954/bitwise-on-a-long

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Bitwise“&”一长?