左移右移1位是否一定等价于乘2除2?
有个疑问,平常我们都爱说用移位代替乘除法来提高性能,那么是不是任何地方都能用移位代替乘除法呢?下面这个例子是不是说明不是所有地方都能用移位替代乘除法?比如下面最后 b = -1 时右移 1 位还是-1,和直观理解除以 2 得到 0 不等价。
int a = 2; //得到 1 a = a >> 1; //得到 0 a = a >> 1; int b = -2; //得到 -1 b = b >> 1; //期望得到 0,实际得到 -1, b = b >> 1;#笔试题目#