-
-
[分享]逆向学习第三天(浮点数 补码 反码)
-
发表于: 2021-4-1 00:50 2767
-
浮点数怎样转为2进制
23.625 转2进制:
23 = 0x17 = 10111
0.625 2 = 1.25 0.25 2 = 0.5 0.5 *2 = 1.0 0结束 所有0.625 = 0.101(二进制)
so 23.625 = 二进制 10111.101 。
4字节保存浮点数方法:
1.定点储存 小数点位置确定。 缺点 不可以扩展 小数点左边只能保存 2^16/2 32 32768 右边也是
xx xx. xx xx
2.科学计数法
S EEEEEEEE DDDDDDDDDDDDDDDDDDDDDDD
符号位 小数点位置 数据位
10111.101 = 1.0111101 10^4
符号位 0为正 1为负
小数点位置怎么算:
因为保存小数点位置的是8位数1字节。 1字节最大表示255 把255去中间 127 最为0 ,左为负,右位正
所以 10111.101 = 1.0111101 10^4
小数点位置 127 + 4 = 131 = 0x83 = 1000 0011
0 10000011 01111010000000000000000 = 23.625二进制表示
0100 0001 1011 1101 0000 0000 0000 0000 = 0x41BD0000
所以在小端存储为 0x0000BD41
注意:double 指数位为11位 总共64位。
**
补码 和 求补
计算机只会做加法 减乘除 最后处理器都会转化为 加法 。
求补是运算,不是编码 。补码是一种编码方式,其中某一步需要求补运算。
求补:
取反+1
补码:
最高有效为符号位 其他是数据位。
S DDDDDDD
0 DDDDDDD 当 他为正数 其余数据正常存放
1 neg(DDDDDDD) 当 他为负数 其余数据求补后存放
当1字节要扩充4字节, 填符号位,不会改变数值。