【发布时间】:2019-09-22 04:52:36
【问题描述】:
我有以下任务:
使用位移计算
x/(2^n),为0 <= n <= 30。要求:向零舍入。
例子:
divpwr2(15,1) = 7 divpwr2(-33,4) = -2合法运营商:
! ~ & ^ | + << >>最大运营商数量:15
这是我目前得到的:
public int DivideByPowerOf2(int x, int n)
{
//TODO: find out why DivideByPowerOf2(-33,4) = -3 instead of -2
return x >> n;
}
DivideByPowerOf2(15,1) = 7 没问题。
但是 DivideByPowerOf2(-33,4) = -3 而不是 -2。为什么?
【问题讨论】:
-
闻起来像作业......
-
您会感兴趣地注意到 33 >> 4 = 2。所以,问题是,
>>运算符对负数有什么作用? -
@Joey 也许是。他不是要我们为他做功课——他是在问我们为什么他的职能没有达到他的预期。
-
提示:哪个位是符号位,当你移位时它会发生什么?
-
@glow:问的还是很差。不过现在已经改变了。
标签: c# bit-manipulation