使用单个数字移位4位

时间:2013-01-23 00:16:35

标签: java bit-manipulation bitmask

我必须编写一个接受整数作为参数(0,1,2或3)的方法。我必须使用它来创建一个0的位掩码。因此,如果参数为0,则位掩码为FFF0,对于1:FF0F,2:F0FF,3 :0FFF。我不想硬编码。

我尝试了什么,但它只能部分起作用:

int bob = 0xFFFF;
int multi = 2;

multi = multi << param;

这适用于1和2,即使是那些,也会使它0xFF000xF000

我也试图不使用乘法(这会使它更容易,所以我不想使用它)。

3 个答案:

答案 0 :(得分:2)

我会说:

0xFFFF - (0xF << (param * 4))

答案 1 :(得分:2)

这样的事情:

bitmask = 0xFFFF;
bitmaskmask = 0xF;
bitmaskmask = bitmaskmask << parameter * 4;
bitmask = bitmask ^ bitmaskmask;

答案 2 :(得分:0)

根据您的输入,您可以使用按位XOR操作实现您正在寻找的内容,如下所示:

xorMask = 0x000F << (4*multi) ;
result = bob ^ xorMask ;

这会在16位值的相应部分中创建一个1位的XOR掩码,然后将其输入与输出中的0进行异或。