通知 网站从因情语写改为晴雨,这个网站的模板也从calmlog_ex改为 whimurmur

计算机组成原理 数据的表示和运算 定点数的表示与运算内容概览

1759人浏览 / 0人评论 / | 作者:因情语写  | 分类: 计算机组成原理  | 标签: 计算机组成原理  | 

作者:因情语写

链接:https://www.proprogrammar.com/article/253

声明:请尊重原作者的劳动,如需转载请注明出处


    说明:本来是抄PPT的内容,但时间来不及,所以以后只写一些自己认为的基础,重点,难点的精简内容,以节约时间,提高学习效率

    (二)定点数的表示与运算

  • 1、定点数的表示 无符号数的表示 带符号的整数表示
  • 2、定点数的运算
  • 定点数的移位运算;原码定点数的加/减运算;补码定点数的加/减运算;定点数的乘/除运算;溢出概念和判别方法。

    (三)浮点数的表示与运算

  • 1、浮点数的表示 IEEE754标准

    2.2 定点数的表示与运算

    2.2.1 定点数的表示

    无符号数的表示---寄存器的位数

    反映无符号数的表示范围

    如8位无符号数的范围是0~255,16位无符号数的范围是0~65535

    有符号数

    1、机器数与真值

    真值                           机器数

带符号的数                符号数字化的数

+0.1011                       01011

                                     |           小数点的位置

-0.1011                        11011

                                      |         小数点的位置

+1100                          01100

                                             |  小数点的位置

-1100                          11100

                                             |  小数点的位置

    定点表示

    小数点按约定方式标出

  • 三种有符号数的表示方法:

    原码、补码、反码、移码

    -正数的编码值与真值一样

    -负数具有不同的编码

    -编码的最高位为符号位:

    - 0 表示正

    - 1 表示负

    原码表示法

    最高位作为符号位,用“0”表示正号,用“1”表示负号,有效值部分用二进制的绝对值表示。

    简单地说:原码=符号+绝对值

    定义

    整数

    x为真值    n为整数的位数

    如 x = +1110   [x]原 = 0,1110 用逗号将符号位和数值部分隔开

        x = -1110    [x]原 = 2⁴ + 1110 = 1 1110

     x为真值

    如 x = +0.1101       [x]原 = 0.1101    用小数点将符号位和数值部分隔开

    x = -0.1101    [x]原 = 1 - (-0.1101) = 1.1101

    x = + 0.1000000    [x]原 = 0.1000000    用小数点将符号位和数值部分隔开

    x = - 0.1000000  [x]原 = 1-(-0.1000000) = 1.1000000

    注:原码的+0.0000[00000]和-0.0000[10000]不一样

    原码的特点:简单、直观

    但是用原码作加法时,会出现这种问题:

    如果是一正一负做加法,那么结果可正可负,需要判断符号

    想法:能否只作加法?

    找到一个与负数等价的正数,来代替这个负数,就可使减->加

    补码表示法

    可以看成模12

    一个负数加上“模”即得该数的补数

    一个正数和一个负数互为补数时

    它们绝对值之和即为模数

  • 计数器 (模16)

    1011             0000?

    1011             1011

  -1011           +0101

----------      ---------   

   0000            10000   - 1是溢出,会被去掉

    可见 1011可用+0101代替

    记作 1011 ≡ +0101 (mod2⁴)

    同理 011 ≡ +101 (mod2³)

    0.1001 ≡ + 1.0111 (mod2)

    (2)补码定义

    整数

    x为真值                      n为整数的位数

    如  x=+1010                  x=-1011000

    [x]原=0,1010                 [x]补=2⁷⁺¹+(-1011000)=1,0101000   用逗号将符号位和数值部分隔开

    问题:要进行减法,不方便,要进行改进

    小数

x为真值

    如x = +0.1110           x=-0.110000

    [x]补= 0.1110         [x]补=2+(-0.1100000)=1.0100000    用小数点将符号位和数值部分隔开

    (3)求补码的快捷方式

    设x = -1010时

    则[x]补 = 2⁴⁺¹ - 1010 = 1111 + 1 -1010 = 10101 + 1 = 1,0110

    当真值为负时,补码可用原码除符号位外,每位取反,末位加1求得

    如何由补码求原码?

    已知[x]补 = 1.0001,求x

    由定义得

    x = [x]补 - 2

     = 1.0001 - 10.0000

    = -0.1111

    快捷方式就是当补码为负时,原码可用补码除符号位外,每位取反,末位加1求得

    总结求补码的方法:

    正数补码等于其原码,符号+绝对值

    负数的补码(两种方法):

    1、先写出该数的原码,保持符号位不变,其余各位对应求反,且在末尾加1。

    2、先写出与该负数对应的正数的补码表示,将其按位求反(包括符号位),且在末尾加1。

    注:真值零的补码是唯一的

    +0=-0=0....0

    4. 反码表示法

    整数

    x为真值              n为整数的位数

    注:正数的原补反码相同,负数的补码是原码除符号位按位取反加1,负数的反码是原码除符号位按位取反不加1

    小数

    x为真值              n为整数的位数

    负小数的反码也即按数取反,末位不加1(反码与补三很像,与补码对比)

    0的反码

    +0.0 -> 0.0000

     -0.0 -> 1.1111

     +0 -> 0,0000

     -0 -> 1,1111

    即可知+0≠-0

    三种机器数的小结

    原-补-反

    最高位为符号位,书写上用“,”(整数)或“."(小数)将数值部分和符号位隔开

    对于正数,原码=补码=反码

    对于负数,符号位为1,其数值部分

    补码:原码除符号位外每位取反末位加1

    反码:原码除符号位外每位取反

    反码是原码的一次操作(按位取反)而来,表示范围和原码相同

    8位字长的几种表示法的真值的范围

    设机器字长有n+1位

    -原码定点小数的表示范围为    -(1-2⁻ⁿ)~(1-2⁻ⁿ)

    -补码定点小数的表示范围为    -1~(1-2⁻ⁿ)

    -原码定点整数的表示范围为    -(2ⁿ - 1)~2ⁿ - 1

    -补码定点整数的表示范围为    -2ⁿ~2ⁿ - 1

    由[y]补包括符号位在内按位取反末位加1得[-y]补

    5. 移码表示法

    补码是先增后减再增,不好直接判断其真值大小

    x为真值      n为整数的位数

    移码的大小和真值的大小的一致的

    补码和移码只差一个符号位

    最小真值的移码为0...0, [0]移码=1,0...0,实际使用中用移码表示浮点数的阶码,反码的表示范围和补码保持一致

    2.2.2 浮点数表示

    计算机中r取2、4、8、16等

    S小数,可正可负,j整数,可正可负

    规格化数

    2. 浮点数的表示范围

    3. 浮点数的规格化形式

    r=2 尾数最高位为1 -规格化数

    4. 浮点数的规格化

    r=2 左规 尾数左移1位,阶码减1

          右规  尾数右移1位,阶码加1

    规格化会改会最小正数和最大负数的范围(因为尾数的第一位变成了0)

    机器零

    当浮点数尾数为0时,不论其阶码为何值按机器零处理

    当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理

    当阶码用移码,尾数用补码表示时,机器零为

    0,0....0;0.0....0    表示的规整,有利于机器中”判0“电路的实现

    四、IEEE 754标准

    尾数为规格化表示-原码 1.ff...ff

    非”0“的有效位最高位为”1“(隐含)

              符号位S      阶码      尾数       总位数

短实数        1               8           23         32

长实数        1              11          52         64

    其中127叫做偏移值

    所以一个规格化的32位浮点数x的真值表示为:

    x = (-1)ˢ x (1.M) x 2ᴱ⁻¹²⁷

    IEEE754的32位浮点数表示的除0外绝对值最小的数:

    s 00000001 0000 0000 0000 0000 0000 000

    x = (-1)ˢ x 1.0 x 2⁻¹²⁶

    IEEE754的32位浮点数表示的除∞外绝对值最大的数:

    s 11111110 1111 1111 1111 1111 1111 111

    x = (-1)ˢ x (2-2⁻²³) x 2¹²⁷


亲爱的读者:有时间可以点赞评论一下

点赞(0) 打赏

全部评论

还没有评论!
广告位-帮帮忙点下广告