5

在这里,我想生成一个位模式来设置n数字等于1从 position 开始p。数字从 开始编号0 to 31。以下是我所做的。

int bitPattern(int n, int p) {
    int hex, num1, num2;
    hex = 0x80000000;
    num1 = (hex >> (31 - p));
    num2 = (hex >> (31 - (n+p)));
    return num1 ^ num2;
}

例子:

bitPattern(6, 2) should return 
..000011111100

有更少运营商的替代解决方案吗?

4

1 回答 1

5

你可以这样做:

return ((1<<n)-1)<<p;

要使n位置为零,请计算(2^n)-1; 回想起来2^n就是1<<n,所以表情就变成了((1<<n)-1)。现在您需要p在后面添加零,因此将结果左移p.

于 2013-06-01T02:13:07.750 回答