不同进制数的表示形式
二进制:0b
八进制:0
十六进制:0x
int a = 0b001;
int b = 07;
int c = 0xa;
cout << a << endl; // 1
cout << b << endl; // 7
cout << c << endl; // 10
计算机中对数字的表示方法
相关概念
-
原码:数值绝对值二进制表示+1位符号位(即最高位正数为0,负数为1)
-
补码:正数补码=原码;
负数补码=原码除符号位外的所有位取反后加1
+5 | -5 | |
---|---|---|
原码 | 0101 | 1101 |
补码 | 0101 | 1011 |
注意:0的原码,补码都是0;
**计算机存储的都是补码**
移位操作
-
逻辑移位:移位不考虑符号位,即不论左移还是右移,都补0
-
算术移位:移位考虑符号位,即带符号位的移位
正数:无论左移还是右移都是补0; 负数:左移在右边补0,右移需要在左边补1
补充:如果要对负数做逻辑移位,可以****int转unsigned int
<