int a = 1;
int b = a << 1; //左移1位
int c = a >> 2; //右移2位
C语言处理标准
左移:移位和右边补零
右移:有两种处理方式
无符号数采用逻辑右移:移位和左边补零
有符号数采用算术右移:移位和左边补符号位(正数补0,负数补1)。
示例:
unsigned int a = 0xFFFFFFFF;
int b = 0xFFFFFFFF;
printf("%x\n", a << 1);
printf("%x\n", b << 1);
printf("-----------------\n");
printf("%x\n", a >> 1);
printf("%x\n", b >> 1);
* 运行结果:
fffffffe
fffffffe
-----------------
7fffffff
ffffffff