-
1 教学内容
-
2 教学视频
-
3 翻转教学任务单
本节教学内容:
1、定点数和浮点数的比较
2、移位运算
教学目的和要求:
1、区分定点数和浮点数的不同;
2、掌握定点数和浮点数的机器数形式;
3、掌握移位运算。
重点:
1、定点数和浮点数的机器数形式;
2、移位运算。
难点:
1、理解和区分定点数和浮点数的不同
第1讲定点数和浮点数的比较
一、知识要点
1、定点数和浮点数的比较
2、定点数和浮点数的表示举例
二、教学安排
通过例题来介绍定点数和浮点数的区别以及表示形式,例题中的数据有整数和小数(分数形式),大家注意整数与小数在形式上的相同点和不同点,特别要注意在表示某个数的浮点数形式时,尾数和阶码在表示上的区别和要点。
三、教学内容
1、定点数和浮点数的比较
定点数和浮点数可从如下几个方面进行比较
1)当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的大得多。
2)当浮点数为规格化数时,其相对精度比定点数高。
3)浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点数运算步骤比定点运算步骤多,运算速度比定点运算的低,运算线路比定点运算的复杂。
4)在溢出的判断方法上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。例如,小数定点机中的数,其绝对值必须小于1,否则“溢出”,此时要求机器停止运算,进行处理。为了防止溢出,上机前必须选择比例因子,这个工作比较麻烦,给编程带来不便。而浮点数的表示范围远比定点数大,仅当“上溢”时机器才会停止运算,故一般不必考虑比例因子的选择。
总之,浮点数在数的表示范围、数的精度、溢出处理和程序编程方面(不取比例因子)均优于定点数。但是在运算规则,运算速度及硬件成本方面又不如定点机。因此,究竟选用定点数还是浮点数,应根据具体应用综合考虑。一般来说,通用的大型计算机大多采用浮点数,或同时采用定、浮点数;小型机、微型机及某些专用机、控制机则大多采用定点数。当需要做浮点运算时,可通过软件实现,也可外加浮点扩展硬件(如协处理器)来实现。
2、举例
例1:将+写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符)。

例2:将–58 表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。

例3:写出对应下图所示的浮点数的补码形式。设n = 10,m = 4,阶符、数符各取1位。

解:

值得注意的是,当一个浮点数尾数为0时,不论其阶码为何值;或阶码等于或小于它所表示的最小数时,不管其尾数为何值,机器都该把浮点数作为零看待,并称之为“机器零”。如果浮点数的阶码用移码表示,尾数用补码表示,则当阶码为它所能表示的最小数2-m(式中m为阶码的位数)且尾数为0时,其阶码(移码)全为0,尾数(补码)也全为0,这样的机器零为000…0000,全零表示有利于简化机器中判“0”电路。
3、IEEE754标准
现代计算机中,浮点数一般采用IEEE制定的国际标准,这种标准形式如下:

按IEEE标准,常用的浮点数有三种:

其中,S为数符,它表示浮点数的正负,但与其有效位(尾数)是分开的。阶码用移码表示,阶码的真值都被加上一个常数(偏移量),如短实数、长实数和临时实数的偏移量用十六进制数表示分别为7FH、3FFH、3FFFH。尾数部分通常都是规格化表示,即非“0”的有效位最高位总是“1”,但在IEEE标准中,有效位呈如下形式。
![]()
其中表示假象的二进制小数点。
四、互动及练习
本次课采用提问的互动方式:
1、怎么转换成二进制?
请同学们先讨论谈自己是怎么转换的,然后给大家复习进制转换的方法,将这种分数转化的方法,主要是给大家介绍简便的转化方法,要求大家掌握。
2、设浮点数字长为16位,其中阶码为5位(含1位阶符),尾数为11位(含1位数符),写出-对应的浮点规格化数的原码、补码、反码和阶码用移码,尾数用补码的形式。
让同学们自己先做,然后做好的同学在黑板上写出来,大家一起来分析并完成此题,以掌握浮点数的机器数表示方法。
第2讲移位运算
一、知识要点
1、移位的意义
2、算术移位规则
3、算术移位和逻辑移位的区别
二、教学安排
首先,介绍移位运算的意义,然后通过例题介绍算术移位的规则,讲这部分要注意移位时原码、补码、反码之间的区别,然后再介绍算术移位和逻辑移位的区别。
三、教学内容
1、移位的意义
移位运算再日常生活中常见。例如,15m可写成37500px,单就数字而言,1500相当于数15相对于小数点左移了两位,并在小数点前面添了两个0;同样15也相当于1500相对于小数点右移了两位,并删去了小数点后面的两个0.可见,当某个十进制数相对于小数点左移n位时,相当于该数乘以10n;右移n位时,相当于该数除以10n。
计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就是该数乘以或除以2n(n=1,2,…,n)。
移位运算称为移位操作,对计算机来说,有很大的实用价值。例如,当某计算机没有乘(除)法运算线路时,可以采用移位和加法相结合,实现乘(除)运算。
计算机中机器数的字长往往时固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。那么,对空出的空位应该添补0还是1呢?这与机器数采用有符号数还是无符号数有关。对有符号数的移位称为算数移位。
2、算数移位规则
对于正数,由于[x]原=[x]补=[x]反=真值,故移位后出现的空位均以0添之。对于负数,由于原码、补码和反码的表示形式不同,故当机器移位时,对其空位的添补规则也不同。下表列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数移位后的添补规则。必须注意的是:不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。

由商标可得出如下结论。
机器数为正时,不论是左移还是右移,添补代码均为0。
由于负数的原码数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0即可。
由于负数的反码各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1.
分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同。故负数的补码左移时,因空位出现在低位,则添补的代码与原码相同,即添0;右移时因空位出现在高位,则添补的代码应与反码相同,即添1。
例1:设机器数字长为8 位(含1位符号位),写出A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。

移位结果如下表所示。

可见,对于正数,三种机器数移位后符号位均不变,左移时最高位丢1,结果出错;右移时最低数位丢1,影响精度。
例2:设机器数字长为8 位(含1位符号位),写出A = –26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。
![]()
原码的移位结果如下表所示。

补码的移位结果如下表所示。

反码的移位结果如下表所示。

可见,对于负数,三种机器数算术移位后符号位均不变。负数的原码左移时,高位丢1,结果出错;右移时,低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错;右移时,低位丢1,影响精度。负数的反码左移时,高位丢0,结果出错;右移时,低位丢0,影响精度。
下图示意了机器中实现算术左移和右移操作的硬件框图。其中图(a)为真值为正的三种机器数的移位操作;图(b)为负数原码的移位操作;图(c)为负数补码的移位操作;图(d)为负数反码的移位操作。

3、算术移位和逻辑移位的区别
有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。逻辑移位的规则是:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。例如,寄存器内容为01010011,逻辑左移为10100110,算术左移为00100110(最高数位“1”移丢)。又如,寄存器内容为10110010,逻辑右移为01011001,若将其视为补码,算术右移为11011001.显然,两种移位的结果是不同的。总结为下:

上例中为了避免算术左移时最高数位丢1,可采用带进位(Cy)的移位,其示意图如下图所示。算术左移时,符号位移至,最高位就可避免移丢。

四、互动及练习
本次课采用提问的互动方式:
1、原码、补码、反码的算术移位是否一样?
让同学们先谈谈自己的看法,然后通过例题对正数的原码、补码、反码的算术移位进行讲解,然后对负数的原码、补码、反码的算术移位进行讲解,并分析它们之间的相同之处与不同之处。
2、算术移位与逻辑移位的区别?
让同学们先谈谈自己的看法,然后用例题引入逻辑移位的规则,并分总结析算术移位和逻辑移位的区别。

