(c语言)移位操作符

#include  //移位操作符(只针对整数进行操作)
//整数的的二进制表示有3种
    //原码
    //反码
    //补码
    //整数在系统中存储和操作的是补码,显示输出的是原码

    //正整数的原码、反码、补码相同
    //负整数的原码、反码、补码关系如下
    //例:-7
    //原码:10000000000000000000000000000111
    //反码:11111111111111111111111111111000  (原码的符号位不变,其余位按位取反就是反码)
    //补码:11111111111111111111111111111001  (反码加1就是补码)

int main()
{
    int a = 7;
    int b = a << 1;
    //左移操作符
    //00000000000000000000000000000111——补码  7
    //00000000000000000000000000001110——左移1位后(左移后补0)  14

    printf("a=%d\n",a); //7
    printf("b=%d\n",b); //14
    //右移操作符
    //算数移位:右边舍弃,左边补符号位(大多数编译器采用算数移位)
    //逻辑移位:右边舍弃,左边补0(会造成整数的正负混乱)
    //00000000000000000000000000000111——补码  7
    //00000000000000000000000000000011——右移1位后  3

    int c = a >> 1;
    printf("c=%d\n", c);  //3
    return 0;
}

你可能感兴趣的:(c语言,算法,开发语言)