3. 移位操作符
<< 左移操作符
>> 右移操作符
注:移动的是二进制位,移位操作符的操作数只能是整数。
一个存储的二进制码分原码、反码、补码
1.十进制数据的二进制表现形式就是原码,原码最左边的一个数字就是符号位,0为正,1为负。
2.正的整数的原码、反码、补码相同
3.负的整数的原码、反码、补码是要计算的
//7(4个字节,32个比特位)
//00000000 00000000 00000000 00000000 00000111-->原码
//00000000 00000000 00000000 00000000 00000111-->反码
//00000000 00000000 00000000 00000000 00000111-->补码
//-7
//10000000 00000000 00000000 00000000 00000111-->原码
//11111111 11111111 11111111 11111111 11111000-->反码(原码的符号位不变,其他位按位取反就是反码)
//11111111 11111111 11111111 11111111 11111001-->补码(反码+1就是补码)
3.1 左移操作符
移位规则:
左边抛弃、右边补0
#include <stdio.h>
int main()
{
int a = 7;
int b = a << 1;
printf("%d\n", b);
return 0;
}
3.2 右移操作符
移位规则(右移运算分两种):
- 逻辑移位
左边用0填充,右边丢弃- 算术移位
左边用原该值的符号位填充,右边丢弃
警告:
int num = 10;
num>>-1;//error
对于移位运算符,不要移动负数位,这个是标准未定义的
标签:11111111,初阶,反码,00000000,补码,--,详解,操作符,原码 From: https://blog.csdn.net/2301_80359017/article/details/139872869