【发布时间】:2012-09-06 21:37:44
【问题描述】:
我试图屏蔽一个整数,以便像这样单独分隔每个字节:
int a = (0xffffffff & 0xff000000) >> 24;
int b = (0xffffffff & 0x00ff0000) >> 16;
int c = (0xffffffff & 0x0000ff00) >> 8;
int d = 0xffffffff & 0x000000ff;
在这种情况下,b、c 和 d 给出了正确答案,255,但是,无论我将其更改为什么,a 都会继续给我 -1 和其他负数,我什至尝试过:
int a = (0xefffffff & 0xff000000) >> 24;
它给了我-17。
有人知道我该如何解决这个问题,以便在这种边界情况下 a 给我 255 和其他正数吗?
【问题讨论】:
-
PS 在您的第二次尝试中,您的意思是屏蔽未设置最高位的值吗?那是
0x7fffffff不是0xefffffff
标签: java bit-manipulation mask