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
位移内存中存储的数据按二进制位左右移动。右移 (二进制数据向右移动) 操作符:>>左移 (二进制数据向左移动) 操作符:<<使用示例int a = 1;int b = a << 1; //左移1位int c = a >> 2; //右移2位C语言处理标准左移:移位和右边补零右移:有两种处理方式无符号数采用逻辑右移:移位和左边补零有符号数采用算术右移:移位和左边补符号位(正数补0,负数补1)。示例:unsig