#include <stdio.h> int main(void) { unsigned a,b,c,d; //unsigned默认等于unsigned int 类型 int n; a = 64; n = 2; //将操作数a右移(6-n)位 b = a >> (6-n); printf("b=%d ",b ); //4 //将操作数a左移n位 c = a << n; printf("c=%d ",c ); //256 //对操作数a进行混合位运算 d = (a >> (n-1)) | (a << (n+1)); printf("d=%d ",d ); //544 } /** 左外移操作符(<<):用来将一个数的各二进制位全部左移若干位 标准的左移语句是:variable << 左外移数。在左移的过程中,高位左移后溢出,舍弃不起作用,左移一位相当于操作数乘以2的一次方;左移2位相当于操作数乘以2的平方 右移位操作符(>>):将一个数的各二进制全部右移若干位。 标准的右移语句是:variable >> 右移位数。在右移的过程中,移到右端的低位将被舍弃,对于无符号数,高位补零。右移一位表示操作数除以2,右移n位相当于操作数除以2的n次方 在右移时,需要注意的是符号位问题。对于无符号数,右移时左边高位移入0,对于有符号数,若原来的符号为0(即该数为正),则左移也是移入0,但是如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统 */