数据的表示
数值1 | 数值-1 | 1+-1 | |
原码 | 0000 0001 | 1000 0001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
移码 | 0000 0001 | 0111 1111 | 1000 0000 |
原码
关于原码就是一个数据转成二进制表达形式一般确定多少字节存放该数据,例如一个字节(8bit)也就是8位,如果转进的二进制不足8位,那么就向高位补0即可。
(例如10进制数1:转成2进制为1,一个字节存储,那么就向左边补上7个0。最高位为符号位。正数而言:符号位为0,负数符号位为1)
反码
正数反码和原码完全一样,包括后面的补码。负数就有差别(负数反码转换:符号位不变其他位按位取反)。例如反码1111 1111原码:符号位不变:1000 0000(符号位1表示负数,结果-0),得到匹配结果。
补码
正数补码和原码一样,负数补码在原来反码基础+1,如表将两个补码相加得到0000 0000,也就是0。
移码
一般用来做浮点运算的揭码,在移码的基础上把首位做取反。(1000 0000=0)
数值表示的范围
整数 | |
原码 | -((2^n-1)-1)~(2^n-1)-1 |
反码 | -((2^n-1)-1)~(2^n-1)-1 |
补码 | -(2^n-1)~(2^n-1)-1 |
注:n表示数位
例如n=8:-127~127
举例子表示:
例如:+0原码反码补码都是0000 0000
-0原码0000 0000 反码1111 1111 补码0000 0000
会发现补码多占了一位。
浮点数运算
浮点数表示:
N=M*R^e
M为尾数,e为指数,R为基数
运算方式
对阶——>尾数计算——>结果格式化