首页
社区
课程
招聘
[分享]逆向学习第三天(浮点数 补码 反码)
发表于: 2021-4-1 00:50 2812

[分享]逆向学习第三天(浮点数 补码 反码)

2021-4-1 00:50
2812

浮点数怎样转为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 ,左为负,右位正
image.png
所以 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
image.png

 

注意:double 指数位为11位 总共64位。
**

 

补码 和 求补
计算机只会做加法 减乘除 最后处理器都会转化为 加法 。
求补是运算,不是编码 。补码是一种编码方式,其中某一步需要求补运算。
求补:
取反+1
补码:
最高有效为符号位 其他是数据位。
S DDDDDDD
0 DDDDDDD 当 他为正数 其余数据正常存放
1 neg(DDDDDDD) 当 他为负数 其余数据求补后存放

 

当1字节要扩充4字节, 填符号位,不会改变数值。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//