我必须编写一个接受整数作为参数(0,1,2或3)的方法。我必须使用它来创建一个0的位掩码。因此,如果参数为0,则位掩码为FFF0
,对于1:FF0F
,2:F0FF
,3 :0FFF
。我不想硬编码。
我尝试了什么,但它只能部分起作用:
int bob = 0xFFFF;
int multi = 2;
multi = multi << param;
这适用于1和2,即使是那些,也会使它0xFF00
和0xF000
。
我也试图不使用乘法(这会使它更容易,所以我不想使用它)。
答案 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进行异或。