最近比较闲,开始看一些以前的基础书,回顾一下以前的知识点,这里分享看《c++反汇编与逆向分析技术揭秘》的一些总结。
浮点数内存结构
float类型在向整形类型转换时,会向零取整,损失精度。
浮点数编码方式:符号、指数、尾数
Float:4字节(32位),1位符号、8位指数、其余尾数
double:8字节(64位),一位符号、11位指数、其余尾数
指数计算+127原因:IEEE编码方式规定,因为最高位代表符号,所以当指数域小于0111111时为一个负数,反之为正数,故0111111表示0
浮点数与0作比较方法:做区间比较,
//判断fFloat 是否为0
Float fTemp = 0.0001f;
If( fFloat >= -fTemp && fFloat <= fTemp )
{
//fTemp等于0
}
浮点数判0做区间比较原因:部分小数转换为二进制数会得到一个无穷值,会根据尾数长度舍弃多余部分,所以会有一定误差,故采用此种方法