- #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;
- }