zoukankan      html  css  js  c++  java
  • 数制(待补充)

    内容:

    1. 定点数
    2. 浮点数
    3. 浮点数特殊情况处理
    4. 定点数转浮点数(待补充)
    5. 参考文献

    定点和浮点都表示有理数

    1、定点数

    定义

    定点数与十进制数类似,有部分位表示整数部分,其余位表示小数部分,有一个位于整数和小数位之间隐含的二进制小数点

    下图为一个带小数的二进制表达式,在b)中隐含的小数点被表示出来,c)为十进制表达式。

    符号

    有符号的定点数可以用二进制补码或者带符号的源码表示,最高位用于表示符号。

    定点数小数点:

    定点数只是位的集合,若不给出数的解释(整数位和小数位的长度),则无法知道是否存在二进制小数点。

    负数补码表示形式

    二进制补码表示是将数的绝对值取反,然后在最低有效位上加1。

    带符号的定点数计算

    下面计算0.75+(-0.625),由于存在负数-0.625,为使加法正确进行,需要将其转换为二进制补码的形式。由于计算结果超过了定点数的位宽,所以计算结果中最高位的1需要舍去。

    2、浮点数

    定义

    浮点数与科学计数法类似,解决了定点数中整数和小数位长度固定的限制,允许表示非常大和非常小的书。

    组成

    浮点数由符号(sign)、尾数(mantissa,M),基数(base,B)和阶码(exponent,E)组成,如下图所示。其中二级制浮点数的基数为2.

    隐含前导1(implicit leading one)

    在二进制浮点数中,尾数的MSB总是1,所以不需要在尾数中存储,被称为隐含前导1。

    偏置(biased)阶码

    阶码需要表示正数和负数阶码,为了做到这点,浮点数使用偏置阶码,就是在原始阶码加上常数偏置32位浮点数使用的偏置是127。就是对于任意阶码,偏置阶码为:实际阶码+偏置。例如:实际阶码为7,则偏置阶码为7+127=134=10000110;对于阶码-4,偏置阶码为127+(-4)=123=01111011。下图为采用隐含前导1和偏置阶码的228浮点表示形式,符合IEEE 754浮点数标准

    偏置阶码理解:以单精度浮点数为例,阶码一共为8位,可以表示-127~127共256个数,但是阶码不使用最高位作为符号位,而是以最低位为-127,最高位为127实现正负数的区分。因此对于单精度浮点数的常数偏置为2^(8-1)-1=127,双精度常数偏置为2^(11-1)-1=1023。

    单精度和双精度格式

    32位浮点数成为单精度浮点数(singal-precision,single或float),IEEE 754标准还定义了64位双精度浮点(double-precision、double)。

    浮点数舍入

    在有效精度外的算数结果数必须四舍五入到最近的值。舍入模式有:1) 向上舍;2) 向下舍;3) 向零舍;4) 向最近端舍(默认方式,如果两端距离相同,保留为小数部分最低有效位为0的数)如果数值部分太大会产生上溢,舍为±∞;数值太小会产生下溢,舍为0。

    浮点数加法:

    1. 提取阶码和小数位;
    2. 加上前导1,形成尾数;
    3. 比较阶码;
    4. 如果需要,对较小的尾数移位;
    5. 尾数相加;
    6. 规范化尾数,并在需要时调整阶码;
    7. 舍入结果;
    8. 把阶码和小数组成浮点数。

    3、浮点数特殊情况

    特殊值与阶码的关系:

      32位浮点数的阶码域可以表达-127~128,其中-127(全0)和128(全1)用于保存为特殊值,-126~127表示常规指数范围。

    IEEE浮点数标准用特殊方式表示0,±∞,非规范数和NaN结果,通常采用全0或者全1填充阶码解决特殊情况

    • 0:因为隐含前导1,所以在浮点数表示中数字0的表示需要特殊表示;
    • 无穷大:上溢结果舍入为无穷,并非最大的浮点数(因为相差太大而毫无意义);
    • NaN:表示不存在的数;
    • 非规范化数:当浮点数的指数允许为最小指数时,尾数不必是规范化的,指数域值为emin-1用于区分规范化和非规范化数;

    下图为这三类结果的表示方法。

    4、定点数转浮点数

    参考文献:

    《数字设计和计算机体系结构》

    http://blog.sina.com.cn/s/blog_5f853eb10100smox.html

  • 相关阅读:
    vim配置----YouCompleteMe配置
    Linux之configure make make install
    zookeeper原理与实践(一)----zookeeper的基本功能
    RPC原理与实践(二)----Thrift分层模型
    RPC原理与实践(一)----RPC原理与实现(Thrift版)
    mysql由浅入深探究(四)----mysql事务详解
    mysql由浅入深探究(三)----mysql增删改查
    mysql由浅入深探究(二)----mysql用户操作
    Django
    7.1
  • 原文地址:https://www.cnblogs.com/lizhiqing/p/12936529.html
Copyright © 2011-2022 走看看