我试图复制功能
int test(int x, int y)
{
int result = 0;
int i;
for (i = y; i <= x; i++)
result |= 1 << i;
return result;
}
取两个整数并为两个数字之间的每个位置设置一个位。假设0 <= x <= 31,并且0 <= y <= 31.例如(7,5)将设置1到1110 0000,其中在移位5,6和7次之后设置比特。
我试图做同样的事情,但仅限于使用某些按位运算符(〜&amp; +&lt;&lt;&lt;&lt;&lt;&lt;&lt;但是我很难找到一种不使用循环的方法。如果y> 1,则该函数应返回0。 X
我相信我可以使用〜(~x&amp; ~y)来复制或运算符x | y。
和x ^ y使用〜(〜(~x&amp; y)&amp;〜(x&amp; ~y));
答案 0 :(得分:0)
如果你可以使用-
,你可以这样做:
int test(int x, int y)
{
int mask1 = (1 << y) - 1;
int mask2 = (1 << (x+1)) - 1;
int result = mask1 ^ mask2;
return result;
}
检查y&gt; x留给读者练习。