版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《单片机技术与应用项目式教程》—机器数与真值授课讲师:曹华机器数与真值1、本任务学习要求及知识要点:1、掌握带符号数的表示方法,以及几种常用编码。计算机以补码形式进行运算,可以将减法变换为有符号数的加法,简化了计算。2、计算的带符号数:二进制中只有“0”和“1”,用“0”表示正数,用“1”表示为负数。由此,一个二进制数,连同符号位在内作为一个数据,称之为机器数,它是计算机能直接识别的数;而用“+”“-”号分别表示正数和负数的数据,称之为真值。以八位机为例:+127的机器数为0111111。-127的机器数为1111111B。
↓
↓
符号位
数值位对于8位来说,除了符号位,最大只能有7个数值位。所以八位二进制原码能表示数的范围为:-127~127。在计算机中常用的机器数有原码、反码、补码三种形式:机器数与真值原码对于带符号数,正数的符号位用0表示,负数的符号位用1表示,这种表示法称为原码。如:[+97]原=01100001B[-97]原=11100001B在-127~+127范围内,我们在数值的前面加符号位即可,原码中,数值“0”究竟有两种表示法,
即:[+0]原=000000B
[-0]原=1000000B
原码表示法简单易懂,且与真值转换方便,但是,当两个异号数相加或两个同号数相减时,就要进行减法运算。而在计算机中的微处理器一般只有加法器,而没有减法器,所以为了把减法运算变为加法运算就引入了反码和补码。机器数与真值2.反码反码与补码要考虑两种情况:正数与负数。1)正数的反码:与正数的原码相同,最高位为符号位,其余则为数值位。
例
如:
[+97]反=0100001B
↓
↓
符号位
数值位2)
负数的反码:保持其原码的符号位不变,即最高位不变,数值位则按位取反。例
如:[-97]原=1100001B[-97]反=1011110B反码所能表示的数值范围,对于八位机来说为-127~+127;对0也有两种表示法。
即:[+0]反=0000000B[-0]反=1111111B机器数与真值3.补
码正数的补码与正数的原码相等;负数的补码为其反码末位加1而形成。例
如:[+97]补=[+97]原=0100001B[-97]补=[-97]反+1=10011110+1=10101111B例:已知[-97]补=1001111,求[[-97]补]朴=?
解:将补码除符号位外逐位取反后,得1100000,则:[[-97]补]补=1100000+1=1100001B=[-97]原
综上所述,可以总结出(以X表示任意数):1)[[X]补]补=[X]原。2)[+0]补=[-0]补=00000000B。3)对于正数:[X]原=[X]反=[X]补。对于负数:原码:反码:补码。机器数与真值3、计算机的溢出:对于八位机而言,二进制补码表示的范围是-128(1000000B)~+127(0111111B),小于-128,大于+127的数称之为溢出。溢出是指超出计算机所能表示数的范围。当不带符号数进行加减运算时,当数值最高位出现了进位或借位,统称进位。带符号数有一位符号位,所以其范围是-128(0000000B)~+127(0111111B);而无符号数的最高位也是数值位,所以其范围才是0(0000000B)~255(1111111B)。例
如:127+129=256(>255)计算机采用二进制加法运算规则,从最低位开始逐位相加。即:127=01111111B
+129=0000001B
进位→10000000B
溢出
计算机对带符号数进行加减运算时,均采用补码形式进行,其结果也仍为补码,但进位与溢出并不一致,只有绝对值增大才有可能有溢出。机器数与真值补码的运算规则。1)补码的加法运算规则[X+Y]补=[X]补+[Y]补2)补码的减法运算规则[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补其中[-Y]可由[Y]朴的符号位和数值位全取反加1求得1.两个正数求和
1)54+46=100计算机采用补码运算:[54]补:00110110B+[46]补:00101110B01100100B两个正数相加,运算结果仍为正数(最高位符号位仍然为“0”),同时考虑补码范围-128<100<+127,不超过规定的表述范围,表明结果正确。机器数与真值2)110+20=130[110]补:01101110B+[20]补:00010100B10000010B两个正数相加,运算结果已为负数(最高位符号位变为“1”),同时130>+127,表明结果不正确。也就是说,正数加正数等于负数,出错!2.两个负数求和(-54)+(-46)=100
[-54]原=10110110B[-54]反=1001001B
[-54]补=11001010B[-54]补:11001010B+[-46]补:11010010B
进位→110011100B
自然丢失[-46]原=10101110B[-46]反=11010001B[-46]补=11010010B根据[[X]补]补=[X]原,经过再一次的求补后就可以得到原码,所以按步骤先求得负数的反码:11100011B。再求补码:11100011B+1=11100100B=[-100]原。两个负数相加,运算结果仍为负数(最高位符号位仍然为“1”),同时根据补码表示数的范围,-128<-100<+127,不超过规定的表示范围,表明结果正确。(2)(-47)+(-85)=-132[-47]原=10101111B[-47]反=11010000B[-47]补=11010001B[-85]原=11010101B[-85]反=10101010B[-85]补=10101011B[-47]补:11010001B
+[-85]补:10101011B
进位→101111100B由于两个负数相加得正数,而且运算结果-132<-128,不在补码的表示范围内,所以结果不正确。也就是说,负数加负数等于正数,出错!机器数与真值机器数与真值3.两数求差由于相减在补码中也转换为加法,这里我们就只看看计算的过程,其他算法与加法相同。(1)52-38=14X-Y=[[X-Y]补]补=[[X]补+[-Y]补]补=[[52]补+[-38]补]补[52]补=00110100B[-38]原=10100110B[-38]反=11011001B[-38]补=11011010B
[52]补:00110100B[-38]补:+11011010B进位→100001110B→=[14]补=14(2)38-52=-14
X-Y=[[X-Y]补]补=[[X]补+[-Y]朴]朴=[[38]补+[-52]补]补[38]补=00100110B[-52]原=10110100B[-52]反=11001011B[-52]补=11001100B[38]补:00100110B[-52]补:+11001100B11110010B根据补码规则,因为是负数,所以T110010B再求一次补:反码:10001101B;补码:10001110B→-14。计算机在做算术运算时,必须检查溢出,以防止发生错误。机器数与真值4.溢出的判断溢出的充分条件:正数+正数=负数、负数+负数=正数,必定有溢出,结果错误;如果正数+正数=正数、负数+负数=负数或者正数+负数,那么无溢出。单片机,是通过程序状态寄存器PSW的进位:(借位)标志CY(CY=1,表示有进位;CY=0,无进位)和溢出标志OV(OV=,表示有溢出,否则无)的状态来进行判断的。
对于八位二进制数据,一般称最低位为第0位,最高位为第7位,采用左高右低的方式如下:位7位0D7D6D5D4D3D2D1D0
当进行加法运算时,若在位D7、D6均有进位或均无进位,即CY7
CY6=0(
表示异或),则OV=0,表示运算结果正确。若在位D7、D6中仅有一位有进位,另一位无进位,即CY7
CY6=1,则OV=1,表示得到两个正数相加、和为负数,或两个负数相加、和为正数的错误结果当进行减法运算时,若在位D7、D6中均产生借位或均无借位,则0V=0,表示运算结果正确;若在位D7、D6中仅有一位产生借位,而另一位无借位,则OV=1,表示得到一个正数减负数得负数,或一个负数减正数得正数的错误结果。在单片机中,每次运算后程序状态寄存器PSW都要给出有无进位(借位)与有无溢出的标志,以此判断运算结果的状态正确与否,并做出相应程序转移处理。机器数与真值1.2.3、编码在机器中都必须以特定的二进制信息来表示,这就是二进制编码。1.二—十进制码二进制编码的十进制数一BCD码,用四位二进制数来表示0~9这十个二进制数码,由于四位二进制数从0000~1111共有十六种组合,因此有很多种BCD码,常用的是8421BCD码8421BCD码与二进制之间的转换较为简单,先将BCD码表示为十进制数后再转换为二进制数,反之亦然。例
如:(10011001)BCD=99=01100011B01011000B=88=(10001000)BCD2.字母和字符的编码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论