舍入到最接近的零,按位

时间:2013-04-09 03:26:08

标签: math floating-point bit-manipulation

我只是想知道如何按位向最接近的零舍入?以前,我使用循环执行长除法。但是,由于数字总是除以数字2,我决定使用位移。所以,我可以得到这样的结果:

12/4=3
13/4=3
14/4=3
15/4=3
16/4=4

我可以通过像往常一样进行长时间划分吗?

12>>2
13>>2

如果我使用这种位移,不同编译器的行为是不同的?如何围捕?我正在使用visual c ++ 2010编译器和gcc。 THX

1 个答案:

答案 0 :(得分:3)

按位移位相当于以2为幂的舍入到负无穷大除法,这意味着答案永远不会大于未基数值(因此例如(-3)>> 1等于-2)

对于非负整数,这相当于舍入到零。