zoukankan      html  css  js  c++  java
  • 浮点数的编码方式

    浮点数编码转换的是IEEE规定的编码标准,IEEE规定将浮点数拆分为3部分,符号、整数、尾数。float和double这两个类型的原理都差不多,但是由于表示的精度不一样,有些许的差别。

    float类型的IEEE编码。

    float类型在内存中占4个字节(32位),最高位表示符号,从左向右取8位表示指数,其余23位用于表示尾数。

    例如:12.25f

    将起转换为二进制是:1100.01

    整数部分是1100.

    小数部分是01.

    将小数点向左或向右移动,直到小数点最左边除却符号位是1为止。

    即此时需要向右移动三位。

    三位几位指数位的数值。

    于是,12.25f经过转换后是:

    符号位:0

    指数位:127+3。即10000010 (为什么要加127(二进制01111111) IEEE规定,小于01111111的指数位为负数)

    尾数位:10001 000000000000000000不足23位,用0填充

    故最后的结果是 0 10000010 10001 000000000000000000 

    十六进制是0x41440000

    在内存中以小尾方式排列为 00 00 44 41

    值得注意的是 double最高位同样表示符号位,指数位占11位,剩余42位表示用于位数。

    在float中,指数范围中加127表示符号正负,同样double扩大了精度,指数范围中加1023表示符号正负,其他方法和float一样。

  • 相关阅读:
    ORM模型框架(使用mysql)
    Python操作Mysql
    Jmeter操作数据库
    .NetCore+OpenSSL实现Https
    深入理解Https如何保证通信安全
    关于数据库事务和锁的一些分析
    C# Task.Run与Task.Factory.StartNew
    WPF 元素代理解决MVVM模式下DataGridColumn绑定无效问题
    WPF DataGrid行拖拽
    C#集合Clear()和new的性能差异
  • 原文地址:https://www.cnblogs.com/Reyzal/p/5142319.html
Copyright © 2011-2022 走看看