一.移位操作符 移动的是二进制位 操作数只能是整数
(1)<<左移 左边抛弃 右边补0
(2)>>右移 逻辑右移/算术右移 取决于编译器的实现,常见的编译器都是算术右移
逻辑右移 :左边补0 右边丢弃
算术右移 :左边用原符号位填充,右边丢弃
对于移位操作符,不要移动负数位,这个是标准未定义的。
代码示例:
#include<stdio.h>
int main()
{
int a = 6;
int b = (a << 1);
//00000000000000000000000000000110
//00000000000000000000000000001100
printf("%d\n", b);//12
printf("%d\n", a);//6
return 0;
}
对于负数:
#include<stdio.h>
int main()
{
int a = -6;
int b = (a << 1);
//10000000000000000000000000000110
//11111111111111111111111111111001
//11111111111111111111111111111010 -6补码
//11111111111111111111111111110100 b中得到的补码