我需要实现应激活的功能int activate_bits(int a,int left,int right)数字a上左侧和右侧的所有位(不包括左侧和右侧的位)右)。
到目前为止,我已经提出了这个:
int activate_bits(int a, int left, int right)
{
int n, j, mask, masked_a;
for (n = 1; n < left; n++) {
mask = 1 << n;
masked_a = a | mask;
}
for (j = 31; j > right; j--) {
mask = 1 >> j;
masked_a = a | mask;
}
return masked_a;
}
有人可以帮我为什么masked_a不正确或修复我的错误代码吗?
我怀疑您需要在循环之前将masked_a
设置为a
:
int activate_bits(int a, int left, int right)
{
int n, j, mask, masked_a;
masked_a = a;
for (n = 1; n < left; n++) {
mask = 1 << n;
masked_a = masked_a | mask;
}
for (j = 31; j > right; j--) {
mask = 1 >> j;
masked_a = masked_a | mask;
}
return masked_a;
}