数据格式
定点数
XnXn-1...X0,其中Xn为符号位(0是正数,1是负数),Xn-1Xn-2...X0为数值。
- 当X = Xn-1...X0表示无符号纯小数时,大小为[0,1-2(-n)]
- 当X = Xn-1...X0表示无符号整数时,大小为[0,2n - 1]
浮点数
,其中e为指数,M为尾数
32位浮点数
31(位) | 30 - 23(位) | 22 - 0(位) |
---|---|---|
S | E | M |
其中1位的S表示符号位,8位的E表示阶码,23位的M表示尾数
E = e + 127 = e + 27 - 1
64位浮点数
63(位) | 62 - 52(位) | 51 - 0(位) |
---|---|---|
S | E | M |
其中1位的S表示符号位,11位的E表示阶码,52位的M表示尾数
E = e + 1023 = e + 210 - 1
所以在IEEE754标准中,浮点数的表达式为:
x = (-1)S * 1.M * 2e
- 例如:0 (S)1000 0010(E)011 0110 0000 000 0000 0000 (M)
S = 0
e = E - 127 = 1000 0010 - 127 = 3
1.M = 1.011011
x = (-1)0 * 1.011011*23 = 1011.011 = 11.375
数的机器码表示
原码补码转换
- 正数:补码等于原码
- 负数:去掉符号位进行扫描法
补码的作用:将加减法转换为补码的加法
- 例如:
- x + y = [x]补 + [y]补 = [x+y]补
因此利用补码相加得到[x+y]补,再利用补码转换为原码得到x + y - x - y = [x]补 + [-y]补 = [x-y]补
同理利用补码原码相互转换得到 x - y
移码和补码
移码是符号相反的补码。
移码作用:用来表示阶码, [e]移 = E。
[e]移 = 2k + e
e为k+1位的真值,其中k+1位为符号位
举例:
e = -127, 原码1111 1111
e 为 8 位真值,所以 k = 7
注:但是在IEEE中规定偏移常数值不是,而是
。
网友评论