位移运算

#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,要取决于所用的计算机系统

*/
杂念太多,必然根基浅薄
原文地址:https://www.cnblogs.com/starshine-zhp/p/12381919.html