• 961计组考纲(2)——数据的表示和运算


    961计组考纲(2)——数据的表示和运算

    这一部分上课的时候根本没讲过,结果一看真题还考了,遂不得已看看,结果也不是很懂。QAQ

    数制与编码

    二进制与十进制的转换,不解释。

    值得注意的是,二进制的小数位只能表示(1/2, 1/4, 1/8, ..., 1/2^n),因此二进制无法表示所有的十进制小数,只能近似表示(所以有了浮点数?)

    定点数和浮点数的表示与运算

    定点数表示

    这里全都考虑有符号数,假设字长有n+1位

    • 源码([-2^n+1, 2^n-1]):第一位表示符号,剩下表示绝对值数值,表示范围
    • 反码([-2^n+1, 2^n-1]):第一位表示符号
      • 若是正数,数值位与源码相同
      • 若是负数,数值位与源码按位取反
    • 补码([-2^n, 2^n-1]):正数与源码相同,负数则取反码+1,0只有一种表示,多出来的10000(1后面n个0)可以表示(-2^n),1后面的数值位表示(-2^n)后面补上多少绝对值,而源码中00000和10000都表示0,显然不适合程序
    • 移码([-2^n, 2^n-1]):真值加上某个2的幂

    定点数运算

    补码机器实现加、减运算的方法统一(模运算-去掉溢出)

    • 符号位和数值位按同样规则参与运算
    • 逢二进一
    • ([A +B]_{补} = [A]_{补}+[B]_{补} mod(2^{n+1}))
    • ([A-B]_{补} = [A]_{补}+[-B]_{补}mod(2^{n+1}))
    • 运算结果仍是补码

    乘除法:异或运算

    • 部分乘积和被乘数取「双符号位」

    浮点数表示法

    通常采用(mathbf{S} imes 2^{mathrm{J}})

    • 阶码J:采用定点整数表示(下面的01000)
    • 尾数S:采用定点小数表示(下面的0.10110010001)

    [(178.125)_{10}=(10110010.001)_{2}=0.10110010001 imes 2^{01000} ]

    image-20201026205303563

    IEEE 754标准

    • IEEE 754中尾数m采用源码表示(理解为科学计数法的基,不带符号,而且去掉了第一个有效数字1,真是节省存储空间到了极致),阶码部分用移码表示(就是(E-127)或者(E-1023),这样设置的目的可以通过(E in [1,254])的取值大小控制正整数和小数部分的表示,)

    • 单精度浮点数32位,双精度浮点数64位

    • image-20201026205336847

    为了充分利用尾数,增加数据的表示精度,规格化浮点数最高位必须是有效值(小数点前是1,第1位有效数字)

    • 单精度浮点数表示公式:((-1)^{S} imes 1 . m imes 2^{(E-127)})

      • float所能表示的最大正整数:符号0,阶码取最大值为127(即254-127),令m(23位)尾数全为1时最大,则(m=2-2^{-23}),结果是((2-2^{-23}) imes 2^{127}=2^{128}-2^{104})
      • 【为什么阶码最大只能取127:IEEE标准偏置值位127时,空出8位全1来表示无穷大,空出全0表示非规格化数,故阶E的取值不超过(2^{8}-2 = 254),范围在1~254之内】
    • 双精度浮点数表示公式:((-1)^{S} imes 1 . m imes 2^{(E-1023)})

    恢复成IEEE存储形式的时候记得不要放错地方,运算的时候记得把m写成1.m再计算啊啊啊

    浮点数运算

    • 浮点数运算的特点是阶码运算和尾数运算分开进行,浮点数的加减运算一律采用补码。

    • 浮点数加减运算一般包括:对阶、尾数运算、规格化、舍入、判断溢出

      • 对阶:对阶的目的是为使两个浮点数的尾数能够进行加减运算,毕竟两个数指数相同才能提公因式加减啊。

        • 显然,尾数逻辑右移时,舍弃掉的有效位会产生误差,影响精度
      • 尾数运算:对阶后的尾数按照定点数的规则加减即可

      • 规格化

        • 左规:
        • 右规:
      • 舍入

      • 判断溢出

    • (2017-961)浮点数除法运算的三个基本步骤:阶码运算、尾数运算、结果规格化

    举个栗子:

    https://blog.csdn.net/shuzfan/article/details/53814424

    算术逻辑单元ALU

    串行加法器和并行加法器

    ALU的功能和结构

  • 相关阅读:
    海量数据处理:十道面试题与十个海量数据处理方法总结
    C++中的static及内存分配
    面试时如何向面试官提问
    面试题3:斐波那契数列与爬楼梯
    面试题1:二进制中1的个数
    面试题:单链表的几种处理
    js网页下载csv格式的表格
    解决背景图文字盖住html里面的dom元素
    使用element-ui的常见问题
    Promise-async-await处理函数
  • 原文地址:https://www.cnblogs.com/vanellopeblog/p/961CO2.html
Copyright © 2020-2023  润新知