第6章 计算机的运算方法

目录

6.1 无符号数和有符号数

6.1.1 无符号数

6.1.2 有符号数

1、机器数与真值:

2、原码表示法:

3、反码表示法:

4、补码表示法:

5、移码表示法:

6.2 数的定点表示和浮点表示

6.2.1 定点表示

6.2.2 浮点表示

6.2.3 IEEE 754标准

6.3 定点运算

6.3.1 移位运算

6.3.2 加法和减法运算

6.3.3 乘法运算

6.3.4 除法运算

6.4 浮点运算

6.4.1 浮点加减运算​​​​​​​


6.1 无符号数和有符号数

  • 在计算机中参与运算的数有两大类:无符号数和有符号数。

6.1.1 无符号数

  • 所谓无符号数,即没有符号的数,在寄存器中的每一位均可用来存放数值。
  • 寄存器的位数反映无符号数的表示范围
  • 寄存器的位数通常也称为机器字长

6.1.2 有符号数

1、机器数与真值:

  • 真值:带正负号的数
  • 机器数:符号数字化的数(用”0“表示“正”,用”1“表示“负”)
    • 小数:

    • 整数:

2、原码表示法:

  • 原码表示简单明了,并易于和真值转换。
  • 符号位为0表示正数,符号位为1表示负数。数值位即真值的绝对值
  • 原码表示又称为带符号的绝对值表示
  • 为了书写方便以及区别整数和小数,整数的符号位和数值位之间用逗号隔开;小数的符号位和数值位之间用小数点隔开。
  • 原码中的“零”有两种表示形式。

3、反码表示法:

  • 正数:原码 = 反码
  • 负数:反码可用原码除符号位外每位取反求得。
  • 原码中的“零”有两种表示形式。

4、补码表示法:

  • 引入补码的概念是为了消除减法运算
  • 一个负数加上“模”即得该负数的补数。
  • 一个正数和一个负数互为补数时,它们绝对值之和即为模数。
  • 正数的补数为其本身。
  • 变形补码:双符号位的补码。
  • 当真值为正时:原码 = 反码 = 补码
  • 当真值为负时,补码可用原码除符号位外每位取反,末位加1求得。
  • 当真值为负时,原码可用补码除符号位外每位取反,末位加1求得。
  • 【y】补连同符号位在内,每位取反,末位加1即得【-y】补。
  • 补码中的“零”只有一种表示形式。

5、移码表示法:

  • 同一个真值的补码与移码只差一个符号位。
  • 用移码表示浮点数的阶码,能方便地判断浮点数的阶码大小。
  • 补码中的“零”只有一种表示形式。


6.2 数的定点表示和浮点表示

6.2.1 定点表示

  • 没有任何硬件可以用来标识小数点的位置。
  • 定点机:采用定点数的机器
  • 定点数:纯整数、纯小数

6.2.2 浮点表示

  • 浮点数即小数点的位置可以浮动的数。
  • 为了提高数据精度以及便于浮点数的比较,在计算机中规定浮点数的尾数纯小数形式,将尾数最高位为1的浮点数称为规格化数
  • 浮点数表示成规格化形式后,其精度最高。

1、浮点数的表示形式:

  • 浮点数由阶码j尾数S两部分组成。
  • 阶码是整数,阶符和阶码的位数m合起来反映浮点数的表示范围,以及小数点的实际位置。
  • 尾数是小数:其位数n反映了浮点数的精度。
  • 尾数的符号代表浮点数的正负。
  • 计算机中浮点数的阶码和尾数可以采用同一种机器数表示,也可以采用不同的机器数表示。

2、浮点数的表示范围:

  • 上溢:阶码 > 最大阶码
  • 下溢:阶码 < 最小阶码     按机器零处理

3、浮点数的规格化形式

  • r = 2:尾数最高位为1
  • r = 4:尾数最高2位不全为0
  • r = 8:尾数最高8位不全为0
  • 基数不同,浮点数的规格化形式不同。

4、浮点数规格化:

  • r = 2:
    • 左规:尾数左移1位,阶码减1
    • 右规:尾数右移1位,阶码加1
  • r = 4:
    • 左规:尾数左移2位,阶码减1
    • 右规:尾数右移2位,阶码加1
  • r = 8:
    • 左规:尾数左移3位,阶码减1
    • 右规:尾数右移3位,阶码加1
  • 基数r越大,可表示的浮点数的范围越大。
  • 基数r越大,浮点数的精度降低。

notes:机器零:

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

6.2.3 IEEE 754标准

  •  S为数符,它表示浮点数的正负。
  • 阶码用移码表示,尾数用原码表示。


6.3 定点运算

6.3.1 移位运算

  • 在计算机中,移位与加减配合,能够实现乘除运算。

1、算数移位:

  • 有符号数的移位称为算数移位。
  • 算术移位的规则:符号位不变

  •  算术移位的硬件实现:

2、逻辑移位:

  • 无符号数的移位称为逻辑移位。
  • 逻辑左移:低位添0,高位移丢

  • 逻辑右移:高位添0,低位移丢

6.3.2 加法和减法运算

  • 减法运算可以看作被减数加上一个减数的负值。
  • 现代计算机中都采用补码作加减法运算。

1、补码加减运算的基本公式:

  •  连同符号位一起相加,符号位产生的进位自然丢掉。

2、溢出判断:

  • 一位符号位判溢出:
    • 符号不同的两个数相加是不会溢出的。
    • 符号相同的两个数相减是不会溢出的。
    • 参加操作的两个数符号相同,其结果的符号与原操作数的符号不同,即为溢出。
    • 硬件实现:最高有效位的进位 异或 符号位的进位 = 1  ——> 溢出
  • 两位符号位判溢出:
    • 结果的双符号位相同  未溢出
    • 结果的双符号位不同  溢出
      • 最高符号位代表其真正的符号

6.3.3 乘法运算

1、笔算乘法:

  • 乘积的符号心算求得
  • 乘法运算可用加和移位实现(先加法后移位)
  • 由乘数的末位决定被乘数是否与原部分积相加,然后右移一位形成新的部分积,同时乘数右移一位(末位移丢),空出高位存放部分积的低位。
  • 被乘数只与部分积的高位相加。

2、原码的一位乘法运算:

  • 乘积的符号位单独处理。
    • 乘积的符号位由两原码符号位异或运算结果决定。
  • 数值部分为绝对值相乘。
  • 特点:
    • 绝对值运算
    • 用移位的次数判断乘法是否结束
    • 逻辑移位

3、补码的一位乘法运算:

  • 被乘数任意,乘数为正:
    • 与原码乘相似,但加和移位按补码规则运算,乘积的符号自然形成。
  • 被乘数任意,乘数为负:
    • 乘数【y】补,去掉符号位
    • 与原码乘相似,但加和移位按补码规则运算,乘积的符号自然形成。
    • 最后加【-x】补校正
  • Booth算法(被乘数、乘数符号任意):
    • 符号位参与运算,每次移位是补码的“算数右移”
      • 符号位不动,数值位右移,正数右移补0,负数右移补1(符号位是啥就补啥)
    • 辅助位 - MQ中最低位 = 1时,【ACC】+【X】补
    • 辅助位 - MQ中最低位 = 0时,【ACC】+ 0
    • 辅助位 - MQ中最低位 = -1时,【ACC】+【-X】补
    • 一般来说,Booth算法的被乘数、部分积采用双符号位补码。

乘法小结:

  • 整数乘法与小数乘法过程完全相同,可用逗号代替小数点。
  • 原码乘   符号位单独处理
  • 补码乘   符号位自然形成
  • 原码乘去掉符号位运算,即为无符号数乘法。

6.3.4 除法运算

1、笔算除法:

  • 商符单独处理、心算求得。

2、原码除法:

  • 商的符号位单独处理
  • 数值部分为绝对值相除
  • 约定:
    • 小数定点除法:x* < y*
    • 整数定点除法:x* > y*
    • 被除数不等于0
    • 除数不能为0
  • 恢复余数法:
    • 余数为正,上商1,逻辑左移
    • 余数为负,上商0,恢复余数,逻辑左移

  • 不恢复余数法:
    • 不恢复余数法又称为加减交替法、
    • 用移位的次数判断除法是否结束。


6.4 浮点运算

6.4.1 浮点加减运算

  • 首先写出x,y在计算机中的补码表示。
  • 对阶:
    • 使两个操作数的小数点位置对齐,即使两数的阶码相等。
    • 先求阶差,再按小阶向大阶看齐的原则,对阶。
  • 尾数求和:
  • 规格化:
    • 当尾数的最高数值位与符号位不同时,即为规格化形式。
    • 有溢出:右规
    • 未溢出:左规
  • 舍人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值