1.移位操作符 移位操作符分为<<左移操作符和右移操作符>> 注:移位操作符的操作数只能是整数,同时移位操作符移动的是存储在内存中的二进制位(也就是补码) 同时移位操作符不要移动负数位,这个是标准未定义的。 移位规则:左边抛弃、右边补0 例1 #include<stdio.h> int main() { int a=10; int b=a<<1; printf("a=%d\n",a); printf("b=%d\n",b); return 0; } 由于a为正整数,所以补码与原码相同 所以b输出结果为20 例2 #include<stdio.h> int main() { int a = -1; int b = a << 1; printf("a=%d\n", a); printf("b=%d\n", b); return 0; } 由于a为负整数,所以补码等于原码取反加一 所以输出b输出结果为-2 由以上例1与例2可以发现左移操作符有乘2的效果 在右移操作符不同于左移操作符,右移操作符有两种运算 1. 逻辑右移:左边用0填充,右边丢弃 2.