这里我想生成一个位模式来设置 n
位等于 1
从位置 p
开始。
数字从 0 到 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
任何运算符较少的替代解决方案?
最佳答案
你可以这样做:
return ((1<<n)-1)<<p;
制作n
零位置的,计算(2^n)-1
;回想一下 2^n
是1<<n
, 所以表达式变成 ((1<<n)-1)
.现在你需要添加 p
后面的零,所以将结果左移 p
.
关于c - 使用按位运算符生成特定的位模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868389/