0

我必须编写一个将整数作为参数(0、1、2 或 3)的方法。我必须使用它来创建一个带有 0 的位掩码。因此,如果参数为 0,则位掩码将为FFF01: FF0F、 2: F0FF、 3: 0FFF。我试图不对其进行硬编码。

我已经尝试过,但它只能部分工作:

int bob = 0xFFFF;
int multi = 2;

multi = multi << param;

这适用于 1 和 2,即使是那些,它也可以0xFF00, 和0xF000.

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

4

3 回答 3

2

我会说:

0xFFFF - (0xF << (param * 4))
于 2013-01-23T00:20:04.963 回答
2

像这样的东西:

bitmask = 0xFFFF;
bitmaskmask = 0xF;
bitmaskmask = bitmaskmask << parameter * 4;
bitmask = bitmask ^ bitmaskmask;
于 2013-01-23T00:20:30.267 回答
0

给定您的输入,您可以使用按位异或运算来实现您正在寻找的内容,如下所示:

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

这将在 16 位值的适当部分创建一个具有 1 位的 XOR 掩码,然后将其与输入异或到 0 输出中的那些位。

于 2013-01-23T00:24:43.163 回答