【计算机组成原理/笔记+习题】第六章 计算机的运算方法 ...

打印 上一主题 下一主题

主题 1378|帖子 1378|积分 4134

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
6.1无符号数和有符号数

一、无符号数 约定符号为正
n位无符号数的表示范围0~2n-1

二、有符号数
1.机器数与真值
最高位0表示正,1表示负


2.原码表示法

(1)定义  
对于整数(x为真值,n为位数)

相称于正数前面加0,负数前面加1

对于小数(x为真值)

此时0分为+0,-0


3.补码表示法

(1)补的概念
好比时间,6点前推3小时(-3)为3点,后推9小时(+9)也是3点,则+9是-3以12为模的补数

(2)补码定义
整数:

小数:


(4)求补码的快捷方式
真值为正,补码为原码
真值为负,补码为原码除符号位外每位取反,加1
   

  当x=-16时,原码1,10000  补码1,10000
  当x=-17时,原码1,10001  补码1,01111
  所以x<-16时,x1必为0
  注意:补码的表示范围是-2n~2n-1,-32补码为1,00000,它没有原码
  所以选C
   

  x2~6全0时为-32
  C
  
4.反码表示法

(1)定义


对于正数,原码=反码=补码
对于负数,符号位为1,原码数值部分取反得反码,加一得补码

原码有+-0;原码和反码是对齐的;补码+-0是同一种表示,多一个-2n-1;

   机器数字长为8位,计算-13/64,29/128,100,-87的原码、反码、补码
  注意:正数三码一样,符号位占8位中的一位
  

  
  结论:相反数的补码为——连同符号位取反,再加1
   

  补码1.0000——原码实际上溢出一位,真值为-1
补码1,0000——原码实际上溢出一位,真值为-16

5.移码表示法

补码表示很难直接判定其真值大小

(1)移码定义


(2)移码和补码的比力
移码和补码的符号位相反

(3)真值、补码和移码的对照表


(4)移码的特点


   16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数接纳一位符号位,答案均用十进制表示。
  (1)无符号数;
(2)原码表示的定点小数;
(3)补码表示的定点小数;
(4)补码表示的定点整数;
(5)原码表示的定点整数;
  

  

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

一、定点表示


反码和原码一致,补码的下限扩展一个数

二、浮点表示

1.为什么在计算机中引入浮点表示?
1.编程困难,程序员必要调解小数点的位置数
2.数的表示范围小,为了表示两个大小相差很大的数据,必要很长的机器字长。
3.数据存储单元利用率低

2.浮点表示
浮点数的一样平常情势:N=S*rj ,S尾数、r基数(取2、4、8……)、j阶码
S小数,可正可负;j整数,可正可负

浮点数的表示情势


浮点数的表示范围

上溢无法用数值表示,下溢变为0

最大正数负数,阶数和尾数都大;最小正数负数,阶数和尾数都小。
   设机器数字长为24位,欲表示± 3万的十进制数,试问在包管数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?
  215=32768,所以加上一位符号位,16位可以表示出所有6万的数。
  小数点移动最多为15位,换算成二进制,阶数至少必要4位。
  数符两位,阶码m=4位,尾数n=18位。
  
三、浮点数的规格化情势

更好的利用存储空间,规定尾数的最高位数值必须为有效值。
左规:尾数左移1位(相称于小数点右移1位),阶码减1
右规:尾数右移1位,阶码加1

基数差别,规格化情势差别:
r=2时,尾数最高位必为1
        左规 尾数左移1位,阶码减1
        右规 尾数右移1位,阶码加1
r=4时,尾数最高2位不全为0
        左规 尾数左移2位,阶码减2
        右规 尾数右移3位,阶码加2
r=8时,尾数最高3位不全为0
        左规 尾数左移3位,阶码减3
        右规 尾数右移3位,阶码加3

   设m=4,n=10,r=2,写出尾数规格化后的浮点数的表示范围。最大正数,最小正数,最大负数,最小负数。
  最大正数:2+1111*0.1111111111 = 215*(1-2-10)
  最小正数:2-1111*0.1000000000 = 2-15*2-1 = 2-16
  最大负数:最小正数取反 = -2-16
  最小负数:最大正数取反 = -215*(1-2-10)
    将+19/128写成二进制定点数、浮点数及在定点机和浮点机中的机器数情势。数值部分取10位,数符取1位,浮点数阶码取5位(1位阶符)。
  二进制情势:0.0010011(首位数符+值的二进制情势)
  定点表示:0.0010011000(补齐数值部分10位)
  浮点规格化表示:0.1001100000*2-10
  定点机中:原=反=补=0.0010011000
  浮点机中:原=1,0010;0.1001100000
         反=1,1101;0.1001100000
  补=1,1110;0.1001100000
  
   将-58写成二进制定点数、浮点数及在定点机和浮点机中的机器数情势。数值部分取10位,数符取1位,浮点数阶码取5位(1位阶符)。
  

  只有在机器中才有符号位,其它都用正负号表示
  
   

  没有要求规格化!
  
   

  

  小数点右移,指数为负;小数点左移,指数为正。
  
   

   

  
机器零

机器零与真值零的区别是:机器零在数轴上表示为0点及其附近的一段地区,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真值零则表示0这一个点。
浮点数尾数为0时,不论其阶码为何值,按机器零处理。
浮点数阶码即是或小于它所表示的最小数时,不论尾数为何值,按机器零处理。


四、IEEE754标准


和浮点机表示法的区别:
1.数符移到最前面
2.尾数最高位的1如今隐含了
3.注意差别位数时阶码和尾数的占比

这里的规格化数是以1开头的


   

  真值——二进制——规格化——754
  C1040000H
  
   

  754——拆成符号、阶码、尾数——阶码-127;尾数转换成十进制加1
  -1.5*213
  
   

  B
  最大正数:阶数(整数)最大,2^(2^6-1),尾数(小数)最大:1-2^8
  最小负数:阶数最大:2^(2^6-1),尾数最小:-1
  用补码表示,负值能往下再取一位
  
6.3定点运算

一、移位运算

1.定义
数字相对于小数点进行移位
左移绝对值扩大,右移绝对值缩小

2.算术移位规则
符号位稳定,数值位移动。对于空出来的位置:


例1


左移1位,数值扩大两倍;左移丢弃1时,堕落
右移1位,数值变为1/2;右移丢弃1时,精度下降

例2




   对于补码机器数的算术移位,方法精确的是:
  A右移时高位补0 ,左移时低位补 0
  B右移时高位补 1 ,左移时低位补 0
  C右移时高位补符号位,左移时低位补 0
  D右移时高位补符号位,左移时低位补符号位
  C
  正数原反补一样,左移右移都补0;负数补码左移补0,右移补1(和符号位雷同)
  
3.算术移位的硬件实现

可以从符号位取数,和符号位不雷同则从外界取
丢1有可能堕落、精确、影响精度

4.算术移位和逻辑移位的区别
以上讲的是算术移位,只对数值位移位
逻辑移位是把整个数进行移位,高低位都补0

二、加减法运算

1.加减法运算公式
(1)加法

(2)减法,化减为加,一个数的相反数的补码为其补码所有位取反再加一

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

例:


3.溢出判定
两个数符号雷同才会溢出
(1)一位符号位判溢出
参加操纵的两个数符号雷同,结果符号变化,即为溢出
硬件实现:最高有效位的进位 异或 符号位的进位 = 1,则溢出
就是说,如果符号位和最高有效位有且仅有一个发生了进位,则溢出

(2)两位符号位判溢出
结果的双符号位雷同则未溢出,不雷同则溢出
计算时,双符号数会复制一份符号位使最高两位雷同,结果中最高位代表真实符号
这里必要阐明一点,接纳双符号位方案时,寄存器或主存中的操纵数只需生存一位符号位即可。因为任何精确的数,两个符号位的值总是雷同的,而双符号位在加法器中又是必要的,故在相加时,寄存器中一位符号的值要同时送到加法器的两位符号位的输人端。
三、乘法运算

1.分析笔算乘法

原码的相乘,先不考虑符号
乘完位数会扩大一倍
符号位单独处理——异或

2.笔乘算法改进


小结
乘法运算可用“加”和“移位”实现
n=4,加4次,移4次
由乘数的末位决定被乘数是否与原部分积相加,然后右移一位形成新的部分积,同时乘数右移一位(末位丢弃),空出高位存放部分积的低位
被乘数只与部分积的高位相加
硬件:三个寄存器,具有移位功能;一个全加器

4.原码乘法
(1)原码一位乘运算规则

(2)原码一位乘递推公式


   

  

                                                                  
   

  



5.补码乘法
(1)补码一位乘运算规则

乘数为正,右移补1
乘数为负,最后加[-x]的补进行校正(不考)
   

  1.部分积接纳两位符号位
  2.右移补1
  


Booth算法(重点)(被乘数、乘数符号任意)


通过最后两位的差值来决定是否加东西

   

                                                                       
  1.不必要考虑绝对值,而是将符号位带入运算,结果的符号自然得出          
  2.添加一位附加位0
  3.右移一位补位,包管符号位两位雷同
  4.乘数数据位4位,要右移四次,最后再判定一次是否加,但是不右移
  5.x和y有效位数雷同,结果的有效位数为2倍的x(或y)位数,所以乘数最后一位不取
  
小结
整数乘法与小数完全雷同,用逗号代替小数点
原码乘——符号位单独处理
补码乘——符号位自然形成
差别的乘法运算需有差别的硬件支持

   

  B
  大数相乘才会溢出,F开头的肯定比9开头的小
  
   

  原码:不考虑符号位,n=15,15次加15次移位,30us
  补码:比原码最后多一次相乘,31us
  


浮点加减运算
1.写出两浮点数的补码,阶数和尾数都是两位符号位

2.对阶:求阶差jx-jy,按照小阶向大阶看齐的原则,阶码增大,尾数右移
注意:负数补码右移补1

3.尾数求和:正常相加

4.规格化:如果符号位为01或10,右规,尾数部分右移,阶码变一致,如果丢1,接纳“0舍1入”
如果符号位与尾数最高位雷同,左规至不雷同为止,尾数部分左移,阶码减小

5.溢出判定

6.转为原码

正数都是39次
补码负数左移最多40次,右移只要1次





[

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表