在这里,我想生成一个位模式,以便从位置n
开始设置1
个等于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
使用较少运营商的任何替代解决方案?
答案 0 :(得分:5)
你可以这样做:
return ((1<<n)-1)<<p;
要使n
位于零位置,请计算(2^n)-1
;回想一下2^n
是1<<n
,因此表达式变为((1<<n)-1)
。现在,您需要在后面添加p
个零,因此请将结果移至p
。