欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【计算机组成原理/笔记+习题】第六章 计算机的运算方法

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

2025/1/15 2:49:39 来源:https://blog.csdn.net/2202_75354817/article/details/145111236  浏览:    关键词:【计算机组成原理/笔记+习题】第六章 计算机的运算方法

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次

[

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com