注意:在C语言中是没有“无符号右移”运算符的,在Java中用“>>>”表示,C语言中可以利用“((unsigned int)(-5))>>n”来实现 无论是正数还是负数,其无符号右移都是在其补码的基础上右移,高位补0。 例如 -5 原码1000 …… 0101 反码1111 …… 1010 负数的反码是保留符号位不变源码取反 补码1111 ……...
对于负数x,x>>1=(x-1)/2 所以,-1,右移还是-1。负数的右移1,符号位还是1。符号位原来的1也是右移1的。
移位有两种 只有算术移位会这样 逻辑移位不会