i << 1的二进制表示为:1111 1010(左移为逻辑左移高位丢弃,低位补0),由有符号数char解释为:-6 i >> 1的二进制表示为:1111 1110(右移为算术右移,对于负数来说高位补1),有有符号数char解释为:2 左移右移总结: 右移左移涉及丢弃、补0或补1,但是最终对这一串二进制解释成什么数值是通过变量的定义(是否...
负数是可以用%运算的。也就是当你n=-36的时候和n=-4是一样的。至于你右移用负数个单位。。这个我在VC上测试结果恒为0。。估计是gcc默认负数就成了右移吧。刚才搜了一下,有符号右移貌似在标准中未定义。。所以gcc中估计就是直接把右移负数位(相当于左移)移出的数补到了右边。然后a的话*p...