计算机组成原理(第五版)第二章学习笔记

第二章——运算方法和运算器

  • 数据格式

1.定点数
通常为纯小数或纯整数
设x=xnxn-1…x2x1
其中xn为符号位,若为纯小数,则小数点在其后面eg:0.111 //0为符号位
纯小数表示的范围:0<=|x|<=1-2-n
纯整数表示的范围:0<=|x|<=2n-1

2.浮点数
浮点数有两种:规格化(IEEE754标准)和非规格化
规格化有符号位S、阶码E(a位,能表示的最大的数为c=2a-1,最小的数为d=2-a)、尾数M(b位)(!!!注意不同题目尾数M可能用原码可能用补码!!!)
最大正数:(1+1-2-b)2a(E最大,M最大)
最小正数:1
2d(E最大,M最大)
最大负数:-1*2d(E最大,M最大)
最小负数:-(1+1-2-b)2a(E最大,M最大)
符号位S:表示浮点数的符号
尾数M:小数点在尾数最高位前面eg:.111
阶码E:隐含方式(移码)表示数设e为浮点数的指数真值,e变成E时要加上偏移值(32位浮点数偏移值为127,64位浮点数偏移值为1023),具体看例子:
32位浮点数:(20.59375)10=(10100.10011)2=(1.1010011
24)2
e=4 E=e+127=4+127=(131)10=(1000001)2
所以20.59375的32位浮点数二进制表示为:
0100 0001 1010 0100 1100 0000 0000 0000

  • 移码——补码符号位取反

  • 定点加、减法

[x]+[y]=[x+y]
[x-y]=[x]+[-y]

  • 溢出检测

双符号位法:
NO1.求出补码
NO2.补码前添加一位数,值和符号位相同
NO3.运算后,看前两位数,相同则没溢出,为01则是正溢,10则是负溢,最高位表示结果的正确符号
eg:
x=+1100 y=+1000
[x]=001100 [y]=001000
[x]+[y]=010100
前两个为01 正溢

单符号位法:
设Cf为符号位产生的进位C0为最高有效位产生的进位
Cf=1,C0=0 则产生负溢
Cf=0,C0=1 则产生正溢

  • 定点乘法 和平常使用的乘法差不多
  • 除法(加减交替法)

计算x/y
NO1 求[|x|],[|y|],[-|y|]
NO2 [|x|]+[-|y|]
NO3 看结果最高位,为1则商0,NO5做加法(+[|y|]) 为0则商1,NO5做减法(+[-|y|]
NO4 判断是否求完最后一位商,没有的的话做NO4,求完了的话做NO6
NO5 余数向左移一位,不足位补0 eg:上一步余数为10001 则向左移一位 得到00010 根据NO3判断做加法还是减法,运算后做NO3
NO6 根据NO3判断做加法还是减法,运算后得到余数r

  • 浮点数的加减法

NO1 比较阶码大小,完成对阶(移动小数点,使阶码相等)
NO2 尾数相加减(和上面说的加减法相同)
NO3 尾数规格化(移动小数点,使尾数满足0.5<=|M|<1)

  • 浮点数的乘除法

x=2E1 * Mx y=2E2 * My
x*y=2E1+E2 * (Mx * My)
x/y=2E1-E2 * (Mx / My)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值