我只是想知道如何按位向最接近的零舍入?以前,我使用循环执行长除法。但是,由于数字总是除以数字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
答案 0 :(得分:3)
按位移位相当于以2为幂的舍入到负无穷大除法,这意味着答案永远不会大于未基数值(因此例如(-3)>> 1等于-2)
对于非负整数,这相当于舍入到零。