数据表示与运算

1. 十进制数的编码表示
  • 4位十进制有权码
    XXXX码其中的X代表对应二进制位的权值
8421码 2421码 5211码 4311码
0000 0000 0000 0000
0001 0001 0001 0001
0010 0010 0011 0011
0011 0011 0101 0100
0100 0100 0111 1000
0101 1011 1000 0111
0110 1100 1010 1011
0111 1101 1100 1100
1000 1110 1110 1110
1001 1111 1111 1111
  • 4位十进制无权码
    • 余3码:8421码的基础上加3即二进制的(0011)
    • 格雷码:任何两个相邻的十进制数字二进制编码只有一位二进制位状态不同,其余三位必须相同
余3码 格雷码(1) 格雷码(2)
0011 0000 0000
0100 0001 0100
0101 0011 0110
0110 0010 0010
0111 0110 1010
1000 1110 1011
1001 1010 0011
1010 1000 0001
1011 1100 1001
1100 0100 1000
2.数制间的相互转换
  • 二进制与八进制,十六进制的转换:以小数点为起点,向左或向右将二进制三位(8进制)或四位(16进制)一组进行分组,当二进制位数不足一组时,在整数的最高位之前,或小数的最低位之后补零凑足一组,八进制和十六进制的转换以二进制为桥梁
  • 二进制和十进制的转换
    • 二进制转十进制:按权相加法,将二进制编码为 1 的位的权值相加,需要对2的幂值比较熟悉,小数点后第一位权值是2-1
    • 十进制转二进制
      • 减权定位法:按权相加法的逆应用
      • 除基取余法和乘基取整法,当用于十-二进制转换时,这两种方法分别叫做除2取余法,乘2取整法
        • 除2取余法


          除2取余法
        • 乘2取整法
          • 用2乘十进制小数,积的整数部分作为二进制小数最高位
          • 积的小数部分继续乘2,取整数部分作为二进制小数次高位
          • 重复此过程,直至其为0或已满足转换精度或者遇到了循环为止
          • 将每次乘得的整数位在小数点之后从高到低进行排列,就得到了转换后的二进制小数

3.数据校验方法
  • 奇偶校验码 :在原数据位的基础上增加一位奇偶校验位构成校验码,使用校验码进行数据传送,通过检测数据的奇偶性是否改变来判断出错情况
    • 奇校验:校验位的取值使得数据位和校验位1的个数加起来为奇数
    • 偶校验:校验位的取值使得数据位和校验位1的个数加起来为偶数
    • 可检测出错误,无法确定错误位置,且无法纠错
  • 海明校验码
    • 可发现错误且具纠错能力
    • 基本思想:n个有效的数据位中插入k校验位,形成n+k海明码
    • k校验位将海明码分为k奇偶校验组,每一位合理地分配在几个不同的校验组中,某一位出错时会引起相关校验组的检测值发生改变,通过几个校验组的联合交叉定位,可确定出错位置,实质上是一种多重奇偶校验方法
    • SEC码(纠一或检二码),要么纠正一位错,要么检测两位错,必须指明是要纠错还是检错,n为有效数据为个数,k为校验位个数
    • SEC-DED码(纠一且检二码):可同时纠正一位错且检测两位错


    • 海明码编码规则
      • 每个校验位 Pi 的海明码位号为 2i-1,例如 P3 的海明码下标为 23-1 = H4
      • 校验组的选取方法:被校验的每一位位号等于校验它的各校验位的海明码位号之和
      • 以一个字节 8位 的数据为例,
        • 确定位数,根据不等式关系得校验位个数 k = 5
        • 分配校验码的海明码位号,P1 = 1 , P2 = 2, P3 = 4, P4 = 8,P5 = 13,因为总共只有 13 位,而 25-1 = 16 超出了海明码总位数,故这里只能将 P5 校验码安排在 H13
        • 进行分组
海明码位号 数据位/校验位 参与校验的校验位位号
H1 P1 1
H2 P2 2
H3 D1 1,2
H4 P3 4
H5 D2 1,4
H6 D3 2,4
H7 D4 1,2,4
H8 P4 8
H9 D5 1,8
H10 D6 2,8
H11 D7 1,2,8
H12 D8 4,8
H13 P5 13
  • 校验逻辑
    • P4 = D8⊕D7⊕D6⊕D5 ,P4的海明码序号为8,而在表中,D8 D7 D6 D5 数据位参与 P4 的校验,故这些数据认为是参与 P4 校验的一组,进行异或操作得到 P4 的校验逻辑
    • P3 = D8⊕D4⊕D3⊕D2
    • P2 = D7⊕D6⊕D4⊕D3⊕D1
    • P1 = D7⊕D5⊕D4⊕D2⊕D1
    • P5 = D8⊕D6⊕D5⊕D3⊕D2⊕D1 ,P5校验码的生成比较特殊,观察可知,仅D4,D7参与了三组校验,而其余数据位都只参与了两组校验,使得不同码字距离不等,于是让仅参与两组校验的数据位和 P5 为一组再进行一次校验
  • 海明码译码校验过程:
    • 译码过程需连同校验位一起执行异或操作,分组译码结果组成指误字S5~S1
    • S5 = P5⊕D8⊕D6⊕D5⊕D3⊕D2⊕D1
    • S4 = P4⊕D8⊕D7⊕D6⊕D5
    • S3 = P3⊕D8⊕D4⊕D3⊕D2
    • S2 = P2⊕D7⊕D6⊕D4⊕D3⊕D1
    • S1 = P1⊕D7⊕D5⊕D4⊕D2⊕D1
  • 指误字的不同组合反映海明码的出错情况
    • S5~S100000,表示无错
    • S5~S1仅有一位不为0,表示某一校验位3位海明码(包括数据位和校验位)出错
    • S5~S1两位不为0,发生双错,只能发现错误,不能确定出错位置
    • S5~S1 三位不为0,发生单错,认为是一位数据错,出错位的位号由指误字低4位S4~S1指明,通过对出错位进行定位后,将改位变反即可纠正错误
    • S5~S1四或五位不为0,出错情况严重,系统出现故障

  • 循环冗余校验码(CRC码)
    • 适合串行数据传送场合
    • 如果将一个合法码字首尾连接进行循环移位,每移一位得到的结果仍然是合法码字
    • CRC码的数学基础:模2运算
      • 模2加,模2减:运算结果同异或
      • 模2乘,模2除:部分积和部分余数按照模2加减进行运算,模2除时,当被除数或部分余数的首位为1时,商1,为0商0
    • 数据位和校验位需满足不等式:
      • 2k ≥ n + k + 1 k为校验码位数,n为数据位位数
    • 求CRC码的过程:
      • 题目给出有效数据M(X)和生成多项式G(X),根据M(X)的位数n和上述不等式求出校验码位数k
      • M(X)左移k位 M(X) * Xk = M(X) << k
      • 用左移后的表达式模2除G(X)得到,Q(X) + R(X) / G(X),其中Q(X)为商,R(X) 为余数,这个余数就是校验位的值
      • 这个余数 R(X)M(X) * Xk 相加即得到CRC码

4.真值与机器数
  • 二进制真值
  • 十进制真值
  • MSB:有符号数的最高数值位,即最高有效位
  • LSB:有符号数的最低数值位,即最低有效位
  • 有符号数:带有1位符号位,通常0代表正数1代表负数移码与此相反
  • 对于正数而言,原码,反码,补码与二进制真值相同,书写定点整数时,用逗号将符号位和数值位分开
  • 对于负数
    • 原码符号位为1,其余位与二进制真值数值位相同
    • 反码符号位为1,其余位与二进制真值数值位每位相反0变1,1变0
    • 补码符号位为1,其余位与二进制真值数值位相比,每位取反后末位+1 (即+1LSB)
  • 0的表示
    • 原码,反码 0的表示不唯一
    • 补码的0表示唯一,故补码和原码,补码相比多出一个码点,小数负数可以表示到 -1.0,整数负数可以表示到 -2n此时补码形式为 100000....,除了符号位外,其余数值位全为0,n位数值位个数
机器数形式 二进制真值 0的表示
原码 +0.000 0000 0.000 0000
原码 -0.000 0000 1.000 0000
补码 +0.000 0000 0.000 0000
补码 -0.000 0000 0.000 0000
反码 +0.000 0000 0.000 0000
反码 -0.000 0000 1.111 1111
移码 +0.000 0000 1.000 0000
移码 -0.000 0000 1.000 0000
  • 表示范围
    • 原码和反码的表示范围相同,且正负域相对于0对称
    • 补码的表示范围大于原码和反码,正数表示范围同原码,负数表示范围多一个码点,可表示到-1-2n
  • 移码:数值位和补码相同,符号位0代表负数,1代表正数
  • 原码,反码,补码,移码转换规则
    • 正数原码, 反码,补码表示相同
    • 负数的转换:
      • 原码和补码双向转换的方法:数值位每位按位取反,末位+1
      • 原码和反码双向转换的方法:每位取反
      • 反码转补码:末位+1(即+1LSB)
      • 负数利用原码求补码的一个技巧:从原码数值位从右往左逐位寻找第一个1,这个1的右边同原码,左边每位取反即可得到补码
    • 不论正数还是负数,对补码符号位取反得到移码
  • 原码,补码,反码运算特性
    • 补码和反码运算时,符号位和数值位可作为整体看待,一起参加运算
    • 原码运算时符号位不能参与运算,需单独处理通常是异或运算
  • 变形补码(模4补码)
    • 使用双符号位,最高位总是表示正确的符号
    • 00 表示正数
    • 01 表示正溢出
    • 10 表示负溢出
    • 11 表示负数

5.定点运算
  • 原码加减法
    • 符号位不参与运算, 仅绝对值进行加减
    • 根据加减数的不同符号组合情况确定绝对值是相加还是相减
  • 补码加减法
    • 参与运算的操作数均用补码表示

    • 符号位和数值位一起参与运算

    • 结果的符号位由运算自动产生

    • 运算过程符号位向高位产生的进位自动丢掉

    • 运算结果亦为补码

    • 补码加法基本公式
                   [X + Y] = [X] + [Y] (mod M)

      • 定点小数表示时,M = 2,定点整数时,M = 2n+1n为数值位位数模M的作用是抹掉多余的1
    • 补码减法基本公式
                   [X - Y] = [X] + [-Y] (mod M)

      • [Y][-Y]的方法:连同符号位,每位取反,末位+1
    • 补码加减运算结果的溢出判断方法

      • 根据符号位之间关系

        • 同号两数相加,结果符号变反,则发生溢出
        • 异号两数相减,结果符号与减数相同,则发生溢出
      • 利用进位信号之间的关系,

        • Cs:符号位向更高位的进位输出
        • CMSB: 最高数值位向符号位的进位
        • V = 1 ,发生溢出,V = 0 ,无溢出
        • 为异或符号
                       V = Cs ⊕ CMSB
      • 利用双符号位补码

        • FS1:第一符号位,即真符位:始终代表正确的正负符号
        • FS2:第二符号位
        • 01正溢出
        • 10负溢出
                       V = FS1 ⊕ FS2

6.移位运算
  • 逻辑移位
    • 移位时不考虑数据符号位
    • 只适用于无符号数逻辑数
    • 不管逻辑左移还是逻辑右移,移位后的空出位一律补0移出位一律丢掉
    • 逻辑左移:高位移丢,低位补0
    • 逻辑右移:低位移丢,高位补0
  • 循环移位
    • 将机器字首尾相接,移位通路构成封闭环路
    • 移出位自动填补到空出位
    • 循环左移:最高位移出填入最低位
    • 循环右移:最低位移出填入最高位
  • 算术移位
    • 保证移位后符号位取值不变
    • 原码,补码,反码算术移位规则表
      原码,补码,反码算术移位规则表
    • 算术移位的误差溢出
      原码,补码,反码算术移位误差及溢出情况
    • 补码算术移位时的符号延伸(扩展)特性
      • 补码算术右移时,不论正数负数,MSB始终填充符号位值
  • 误差的舍入处理方法
    • 截断法(截尾) :无条件丢掉超出位数,且保留下来的部分不做任何改变,单向误差(负误差,对结果精确值起减小作用),多次误差累积对运算结果精度影响较大
    • 末位恒置1法:舍去结果最低位超出的数值位同时,将机器数末位LSB恒置1双向误差,对结果精度影响较小,更细致的处理方式:当机器数最低位为1或移出位中有1时,末位置1,否则不做末位置1操作
    • 0舍1入法
      • 将要舍去部分的最高位作为判断标志为0则舍为1则丢掉超出位数后+1LSB
      • 双向误差精确度最高
      • 原码补码正数表示时,上述规则可直接应用
      • 补码负数有所改变:
        • 超出部分最高位为0则舍去
        • 超出部分最高位为1,且其余各位全为0时舍去
        • 超出部分最高位为1,且其余各位不全为0时舍去超出位后+1LSB

7.定点乘法运算
  • 原码一位乘法运算规则

    • 符号位不参与运算
    • 参与运算的是两数的绝对值
    • 乘积结果的符号位由两数符号位异或运算产生
    • 部分积初值为0,取单符号位
    • 乘数最低位作为判断位,若为1加被乘数,若为0加0,然后部分积逻辑右移一位
    • 乘数数值部分n位时,做n加法右移,得到2n位乘积绝对值
    • 例题: 计算 X * Y,其中 X = 0.110 111Y = -0.101 110
      原码一位乘法运算过程
  • 补码一位乘运算规则

    • 参与运算的数X Y均用补码表示
    • 符号位参与运算,运算结果的符号位由运算过程自动生成
    • 部分积初值设为0部分积使用双符号位乘数使用单符号位
    • 乘数最低位之后增加附加位Yn+1,且初始时Yn+1 = 0
    • 乘数最低两位YnYn+1作为判断位,部分积运算规则如下:
      • YnYn+1 = 00,部分积 +0算术右移一位
      • YnYn+1 = 01,部分积 +[X]算术右移一位
      • YnYn+1= 10,部分积 +[-X]算术右移一位
      • YnYn+1 = 11,部分积 +0算术右移一位
    • n位数值位的数据,进行n+1次运算,n次右移,最后一次只运算不移位
    • 运算完成YnYn+1清零
    • 例题:计算 X * Y,其中 X = -0.010 111Y = -0.010 101
      补码一位乘运算过程
  • 补码两位乘运算规则

    • 参与运算的数均用补码表示
    • 符号位参与运算,且结果的符号位由运算过程自动产生
    • 部分积初值为0部分积采用三位符号位
    • 乘数最低一位增加附加位Yn+1,且其初值为0
    • 乘数的数值部分为n位,乘数的符号位
      • n为奇数时,乘数单符号位(n+1)/2运算和移位,最后一步右移 1 位
      • n为偶数时,乘数双符号位n/2 + 1运算n/2移位,最后一步不移位
    • 乘数的最低三位Yn-1YnYn+1判断位,每求一次部分积算术右移两位,部分积运算规则如下:
    • Yn-1YnYn+1 = 000,部分积 +0算术右移两位
    • Yn-1YnYn+1 = 001,部分积 +[X]算术右移两位
    • Yn-1YnYn+1 = 010 ,部分积 +[X]算术右移两位
    • Yn-1YnYn+1 = 011 ,部分积 +[2X]算术右移两位
    • Yn-1YnYn+1 = 100 ,部分积 +[-2X]算术右移两位
    • Yn-1YnYn+1 = 101 ,部分积 +[-X]算术右移两位
    • Yn-1YnYn+1 = 110 ,部分积 +[-X]算术右移两位
    • Yn-1YnYn+1 = 111 ,部分积 +0算术右移两位
    • 运算结束时Yn-1YnYn+1清零
    • 例题:同补码一位乘的题目

补码两位乘运算过程

8.定点除法运算
  • 原码加减交替法(不恢复余数除法)运算规则
    • 参与运算的是两数的绝对值
    • 符号位不参与运算,商的符号位通过两数原码的符号位异或运算产生
    • X绝对值为0, 则商为0,若Y的绝对值为0,则按非法除数处理
    • 运算前应满足 X绝对值<Y绝对值,否则按溢出处理
    • 设商的初值为0,部分余数的初值为被除数
    • 部分余数采用单符号位,且符号位初值位0
    • 部分余数的运算:
      • 首先试减,X* + [-Y*]原码除法要用到除数的补码
      • 部分余数为正R > 0,商1 Qn = 1,余数和商联合逻辑左移 1 位1 << R|Q,减除数 +[-Y*]
      • 部分余数为负R < 0,商0 Qn = 0,余数和商联合逻辑左移 1 位1 << R|Q,加除数 +Y*
      • n+1步,
        • 若余数为正R > 0,商1 Qn = 1,商单独逻辑左移 1 位1 << Q,运算结束
        • 若余数为负R < 0,商0 Qn = 0,商单独逻辑左移 1 位1 << Q,若结果需要余数,需恢复余数余数不移位直接加除数 R + Y*
      • 真正余数R的绝对值形式 R* = Rn * 2-nRn机器余数,是算法最后一步得到的余数
    • 例题: X / Y,其中 X = -0.10101Y = 0.11011
      原码加减交替除法运算过程
  • 补码加减交替法(不恢复余数除法)运算规则
    • 操作数均为补码
    • 符号位参与运算,商符由运算过程自动产生
    • X绝对值为0, 则商为0,若Y的绝对值为0,则按非法除数处理
    • 运算前应满足 X绝对值<Y绝对值,否则按溢出处理
    • 设商的初值为0,部分余数的初值为被除数
    • 部分余数采用单符号位双符号位
    • 部分余数运算规则:
      • 首先试减,试减规则:
        • X Y同号[X] + [-Y]
        • X Y异号[X] + [Y]
      • 试减完上商
        • 部分余数R 和Y同号,商1 Qn = 1,余数和商联合逻辑左移一位1 << R|Q,做减法+[-Y]
        • 部分余数R 和Y异号,商0 Qn = 0,余数和商联合逻辑左移一位1 << R|Q,做加法+[Y]
      • n+1
        • 余数不移位,商单独左移一位末位恒置1,若不需求余数,除法结束
        • 若需求余数:
          • R X同号,除法结束
          • R X异号R Y同号,+[-Y]R Y异号,+[Y]
    • X* > Y*时,补码除法也可以进行,此时商使用双符号位,其真符位FS1通过X Y的符号位异或产生,第二个符号位FS2由运算产生,表示的是溢出到整数位的数值,而不是补码的符号位,可利用商双符号位的异或进行溢出判断
    • 例题:例题: X / Y,其中 X = 0.01101Y = -0.11011

补码加减交替除法运算过程

9.浮点数
  • 浮点数的基本格式
    • M尾数,形式同定点小数
    • E阶码,带符号的k位整数,形式同定点整数
    • R为阶码的基数
                   N = M ⊕ RE
  • 浮点数的一般格式
浮点数的表示形式
  • 规格化浮点数的表示范围
    • 描述规格化浮点数表示范围的关键方法是找准几个边界点
      • 最大正数阶码达到可表示的最大值尾数达到可表示的最大值
      • 最小正数阶码达到可表示的最小值尾数达到规格化正数表示的最小值
      • 最小负数阶码达到可表示的最大值尾数达到可表示的最小值
      • 最大负数阶码达到可表示的最小值尾数达到规格化表示的负数最大值
  • 例题1 阶补尾原
    浮点数阶码8位,其中1位符号位,用补码表示;尾数8位,其中1位符号位,用原码表示,使用规格化写出可表示的数的范围
    • 最大正数:阶码的补码正数可表示最大值为:0,111 1111 = +127,而尾数原码可表示正数最大值为:0.111 1111 = 1 - 2-7,故最大正数为
                   2127 × (1 - 2-7)

    • 最小正数:阶码的补码负数最小值为1,000 0000 = -128阶码为负,只要尾数为正,所表示的数还是正数,故阶码可以取负数,尾数原码可表示的规格化最小正数为:0.100 0000 = 2-1,故可表示的最小正数为:
                   2-128 × 2-1

    • 最大负数:阶码的补码最小值为1,000 0000 = -128,尾数原码的最大负数为1.100 0000 不能是1.111 1111,因为-0.5 > -0.5+-0.25+-0.125+....

    • 最小负数:阶码的补码最大值是0,111 1111,尾数原码的最小负数为1.111 1111
      故可表示的负数真值范围为:
             2127 × (2-7 - 1) ~ 2-128 × (-2-1)

  • 例题2 阶移尾补
    某机字长32位,其浮点数采用规格化阶移尾补格式,其中阶码8位,其中1位符号位;尾数24位,其中1位符号位,使用规格化写出可表示的数的范围
    • 最大正数:阶码移码最大值,尾数补码最大值为1,111 1111;0.111...111(23个1)
      故可表示的最大正数为:
            2127 × (1 - 2-23)
    • 最小正数:阶码移码负数最小值,尾数补码最小值为0,000 0000;0.1 00...000(22个0)
      故可表示的最小正数为:
            2-1 × 2-128
    • 最大负数:阶码移码负数最小值,尾数补码负数最大值为0,000 0000;1.0 11...111(22个1)
      故可表示的最小正数为:
            - (2-1 + 2-23) × 2-128
      这里注意,补码规格化最大负数的形式为1.0 111...111 (1.0后面全为1) ,其对应的十进制真值为
      - (2-1 + 2-n ),其中n为尾数数值位的个数
    • 最小负数:阶码移码最大值,尾数补码负数最小值为1,111 1111;1.00...000(23个0)
      故可表示的最小负数为:
            -1 × 2127 ,补码负数最小可以表示到-1
    • 上溢 阶码 > 最大阶码
    • 下溢 阶码 < 最小阶码 ,按机器零处理
浮点数的表示范围
  • 规格化的浮点数
    • 要求尾数最高位必须是一个有效数值,满足这种规定的浮点数称为规格化浮点数
    • 原码表示的尾数,规格化浮点数尾数的最高数值位总是为1,即 MMSB = 1
    • 补码表示尾数时,Ms⊕ MMSB = 1表示规格化的浮点数,即符号位MSB取值不能相同
    • 原码规格化浮点尾数的表示范围正负域对称,而补码则不对称
    • -1/2对原码来说是规格化浮点数,对补码而言不是规格化的浮点数。-1原码无法表示,而对补码而言是一个规格化尾数
  • 浮点数的规格化处理
    • 右规:发生尾数溢出时,尾数的数值超出小数表示范围冲到了符号位,只需将尾数右移一位阶码+1
    • 左规: 运算后尾数绝对值小于规格化尾数值,可能需要左规多次,尾数每左移一位,阶码-1,直到符合规格化数的判断条件
  • 浮点数的溢出判断
    • 阶码上溢溢出标志
  • 移码的加减运算
    • [Ex] + [Ey] = [Ex] + [Ey]
    • [Ex] - [Ey] = [Ex] + [-Ey]
  • 移码运算的溢出判断,采用双符号位Es1为0表示无溢出,否则发生溢出,Es2表示移码的正负
    • Es1Es2 = 00,负数
    • Es1Es2 = 01,正数
    • Es1Es2 = 10,正溢出上溢,溢出出错
    • Es1Es2 = 11,负溢出下溢,看做机器0

10.浮点数的加减运算
  • 例题1:按机器补码浮点运算步骤计算[X+Y],[X-Y],其中X = 2-011 * 0.101 100,Y = 2-010 * -0.011 100
    • ①先将X Y转换成浮点机器数形式,题目只提到了按补码,故操作数的阶码和尾数都用补码表示,写阶码时,用逗号将符号位和数值位分隔开
      • [X] = 1,101;0.101 100
      • [Y] = 1,110;1.100 100
    • ②对阶 (小的向大的对齐)
      • 先将X Y的阶码用双符号位补码形式写出来,
      • [Ex] = 11,101[Ey] = 11,110[-Ey] = 00,010
      • [ΔE] = [Ex] + [-Ey] = 11,101 + 00,010 = 11,111 < 0
      • ΔE = -1X的阶码小于Y的阶码X向Y对齐,阶码+1,尾数右移一位
      • 对齐后的 [X] = 1,110;0.0101 10 ,对阶完毕
    • ③尾数相加减
      • 注意要使用对完阶后的X和Y浮点数形式,容易粗心使用对阶前的浮点数形式出错
      • 使用双符号位补码对尾数进行加减运算,可利用双符号位取值情况进行溢出判断
      • 这里运算后尾数并未溢出
        尾数相加减
    • ④结果规格化
      • [X+Y]的尾数 11.111 010不是规格化浮点数,需要左规3位,使得 Ms ⊕ MMSB = 1,左规一次阶码减1
      • 左规右规时,对阶码进行加减运算时,最好选十进制数据作为桥梁,可以确保结果的正确性
        结果规格化
    • ⑤舍入:尾数并未右移,故无需舍入
    • ⑥溢出判断:阶码并未超出可表示的数据范围,故无溢出
    • 最后将运算结果转换为二进制真值:
  • 例题2:按机器补码浮点运算步骤计算[X+Y],[X-Y],其中X = 2101 * -0.100 101,Y = 2100 * -0.001 111
    • ①先将X Y转换成浮点机器数形式


    • ②对阶
      • 这里注意,Y的尾数对阶算术右移时,将1位移出到了保护位
    • ③尾数相加减
      • 注意,尾数补码加减运算要带上保护位
    • ④结果规格化
      • 也需带上保护位,将保护位移入有效数值位
    • ⑤舍入
      • 这里使用0舍1入法,负数补码舍入时,保护位为1,其余为全为0,需舍,不进行入1操作
    • ⑥溢出判断:阶码并未超出可表示的数据范围,故无溢出
    • 最后将运算结果转换为二进制真值:



11.浮点数的乘除运算
  • 例题1:


    • ①先将X Y转换成浮点机器数形式
      • 注意尾数是要求用原码表示,不要粗心习惯性地用补码表示
    • ②阶码相加减 使用双符号位移码进行运算,方便进行溢出判断
    • ③尾数相乘除 按照原码乘除运算规则进行
    • ④结果规格化
      • 原码的规格化数要求MMSB始终为1,故X * Y需左规一位
    • ⑤舍入
      • 0舍1入法,原码而言,保护位最高位为0,舍去
    • ⑥溢出判断:阶码并未超出可表示的数据范围,故无溢出
    • 最后将运算结果转换为二进制真值:



12.加法器
  • 一位全加器
    • A,B为输入,Sum为输出,Cin为输入进位信号,Cout为输出进位信号
1 Bit Full Adder
  • 串行加法器:加法速度太慢,仅用于速度要求不高的简单装置中
  • 并行加法器
    • 一个n位加法器可实现n位二进制数据同时相加
    • 各进位信号由低到高串行传递
  • 简述提高加法器乘数运算速度的方法及原理
    • 采用阵列乘除法器,使用了并行的阵列运算电路,即并行的多级加减法硬件电路,故可以降低进位产生的延时,从而提高乘除法运算速度
    • 提高加法器运算速度的关键是降低进位信号的传播时间,而先行进位加法器是一种并行进位的并行加法器,较高位运算结果的产生不依赖于低位的进位,打破进位间依赖关系,直接由并行输入的加数产生进位信号,并行得到各位的进位,各级的进位彼此独立产生,可以减小进位产生的延时,故可以提高乘除运算速度
  • 行波进位加法器和先行进加法器的区别和特点,写出四位先行进位表达式
    • 行波进位加法器:即串行进位的并行加法器,是最简单的并行加法器。n位行波进位加法器由n个全加器通过进位输入输出端首尾连接组成,较高位运算结果的产生依赖于低位的进位,其链式的串行进位结构也叫作串行进位链
    • 行波进位加法器进位逻辑表达式:Ci+1 = gi + piCi
    • 先行进位加法器:是一种并行进位的并行加法器。打破进位间依赖关系,直接由并行输入的加数产生进位信号,并行得到各位的进位,各级的进位彼此独立产生有效提高进位速度,将各级间的进位级联传播给去掉了,由此可以减小进位产生的延时。
    • 四位先行进位表达式将串行进位表达式中前一位进位信号用其表达式直接代入即可得到
      • C1 = g0 + p0C0
      • C2 = g1 + p1g0 + p1p0C0
      • C3 = g2 + p2g1 + p2p1g0 + p2p1p0C0
      • C4 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0C0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容