




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.2 计算机中数的表示方法与编码一、 进位计数制在计算机系统中,采用的是二进制计数,而在日常生活中,我们熟知的是十进制计数,我们首先介绍进位计数的有关概念。十进制计数大约公元400年,印度人发明了十进制计数,这可能与我们的手指有关。公元800年,阿拉伯人开始使用十进制计数,后来又传入欧洲,十进制计数有以下特点: 有十个相互独立的数字:0,1,2,3,4,5,6,7,8,9; 逢十进一; 权为10n任一十进制数:N=n-1n-210.-1-2-mN=n-110n-1+n-210n-2+ +1101+0100+-110-1+-210-2+ +-m10-m 二进制计数(用B表示)计算机中普遍采用二机制计数,其特点为: 有两个独立的数字:0 和 1 ; 逢二进一; 权为2n;任一二进制数: N=n-1n-2 10.-1-2 -mN=n-12n-1+n-22n-2+ +121+020+-12-1+-22-2+ +-m2-m如:11111111.1=127+126+125+124+123+122+121+120+12-1=128+64+32+16+8+4+2+1+0.5=255.5 十六进制计数(用H表示) 特点: 十六个独立的数字:0 1 2 3 4 5 6 7 8 9 A B C D E F; 逢十六进一; 权为十六;任一十六进制数: N=n-1n-2 10.-1-2 -mN=n-116n-1+n-216n-2+ +1161+0160+-116-1+-216-2+ +-m16-m如:3E8H=3162+1416 + 8 = 1000 十六进制数本质上可以说与二进制数相同,将二进制数按四位划分,有: 二进制数 十六进制数 十进制数 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 91010 A 10 1011 B 11 1100 C 121101 D 131110 E 141111 F 15 因此,同一个数有多种表示方法,一定要注明采用什么数制,否则,容易引起误解,如:11 十进制数为:11二进制数为:3 表示为:11B十六进制为:3二、 数制之间的转换主要是二进制和十进制之间的转换,因为十六进制可以很方便地转化成二进制。二进制转十进制前面已经讲过,下面主要讲十进制转二进制。对十进制整数,采用方法:除二取余法:如:53532=26 余 1262=13 余 0132=6 余 162=3 余 0 32=1 余 112=0 余 1 由此得到:53=110101B (注意:后面的余数为高位)对十进制小数,则采用乘二取整法:如:0.3750. 3752=0.75 取整数部分 00. 752=1.5 取整数部分 10. 52=1 取整数部分 1 由此得到:十进制数0.375=0.011B (取数高位到地位顺序是按乘数的先后顺序)混合数则分别按整数部分和小数部分计算.如:53.375=110101.011B三、 计算机中的数和编码前面我们讨论的都是无符号数,有符号数在计算机中如何表述了?十进制中,用符号正负来表示:+4,4。1.带符号数的表示方法 用最高位来表示符号,0 表示为正数,1 表示为负数。 有三种表示方法:原码 反码和补码。 原码:数值用绝对值表示,符号用最高位来表示,“0” 表示为正数,“1” 表示为负数。 正数的原码是该数的二进制表示:如:+ 4=00000100 负数的原码将其符号位变成1即可。 4=10000100 八位二进制有符号数原码能表示的范围是:正数 0000 0000 0111 1111 ,即:+0+127负数 1000 0000 1111 1111 ,即:-0-127反码:正数的反码与原码相同,负数的反码是该数的绝对值取反(含符号位)。 +4 原码 0000 0100 反码:0000 0100 -4 原码:1000 0100 反码:1111 1011 反码的范围是:正数:0000 0000 0111 1111 +0 +127负数:1111 1111 1000 0000 -0 -127 原码和反码都存在两个缺点:存在 +0 和 0 ,不和谐。 必须有减法运算,这就增加了计算机的复杂性。补码:正数的补码和原码一样,即最高位(符号位)为0,其余为数值位。 负数的补码为反码加1; +4,原码:0000 0100 反码:0000 0100 补码:0000 0100 -4,原码:1000 0100 反码:1111 1011 补码:1111 1100补码表示的范围:正数:0000 0000 0111 1111 即:0 127负数: 1111 1111 1000 0000 即:-1 -128引入补码后,减法运算可以由加法来代替,这就简化了计算机的结构。如:205=20 +(- 5)计算机只能识别二进制数,那么计算机是如何识别十进制数字和其他的符号,图表的呢?在计算机中,是以二进制的组合来表示的,这就是二进制编码。 计算机中根据信息对象的不同,编码方式也不一样,常见的有BCD码、ASC码。2.二十进制编码(BCD码)虽然十进制数可以转换成二进制数,但转换很慢,难以一下子看出,如:十进制数789,用二进制表示为:1100010101。为了方便的用二进制来表示十进制数,人们提出了既有二进制数特点又有十进制数特点的编码BCD码。十个十进制数字可以用四位二进制数来表示,选取四个有特点的二进制数,0001,0010,0100,1000,十进制中分别为:1,2,4,8;其他六个数字为这四个编码的组合,因此又叫做8421 BCD编码。下面是8421 BCD编码表: 十进制数 8421 BCD数 二进制数 0 0000 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111 8 1000 1000 9 1001 1001 10 0001 0000 1010 11 0001 0001 1011 12 0001 0010 1100 13 0001 0011 1101 14 0001 0100 1110 15 0001 0101 1111按照上述编码,十进制数789的BCD码为:0111 1000 1001,这样就比较方便。如:1234.789的BCD码为:0001 0010 0011 0100 . 0111 1000 10013. ASC码American Standard Code for Information Interchange 用七位二进制编码来表示十进制数字0 9,英文字母a z,AZ,还有一些控制字符,最高位用于奇偶校验。 数字: 0 9 30H 39H 大写英文字母 A Z 41H 5AH 小写英文字母 a z 61H 7AH美国信息交换标准代码ASC编码表(7位代码) 四、 计算机中二进制数的运算十进制,基本的运算为:加、减、乘、除。下面我们讨论二进制数的加、减、乘、除。 1无符号二进制数的加法二进制数只有两个数字:0 和 1,其加法规则为: 0+0=0 0+1=1 1+1=0 进位1 1+1+1=1 进位 1例1: 0000 1101B mem1+ 0000 1101B mem2 00011010B mem3 十进制数为:13+13=26若计算机字长为八位,结果不会有问题。下面看另外一个加法:例2: 1011 0101B mem1+ 1000 1111B mem2 1 0100 0100 B mem3 十进制数为:181+143=324结果为九位二进制数,产生了进位,由于mem3 只有八位,因而第九位的1会丢失,在men3中实际上只有01000100B即十进制数的68,明显错误。为了处理这种问题,在CPU内部专门设置了一个寄存器,把运算结果的状态表示出来,以便程序进行处理。对8051:是程序状态寄存器PSWPSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供程序查询或判别之用。各位的含义及其格式如下:D7D6D5D4D3D2D1D0CYACF0RS1RS0 OVP CY(PSW7) 进位标志位。在执行加法(或减法)运算指令时,如果运算结果最高位(位7)向前有进位(或借位),CY位由硬件自动置“1”;如运算结果最高位(位7)无进位(或借位),则CY清“o”。 CY也是8051在进行位操作(布尔操作)时的位累加器。 AC(PSW6) 半进位标志位,也称辅助进位标志。当执行加法(或减法)操作时,其运算结果(和或差)产生由低半字节(位3)向高半字节有半进位(或借位)时,AC位将被硬件自动置“1”,否则AC被自动清“o”。 OV(PSW2) 溢出标志位。当进行补码运算时,如有溢出,即当运算结果超出 128 十127的范围时,OV位由硬件自动置OV1;无溢出时,OV0。 PSW1为保留位,805l末用,8052为Fl用户标志位。 P ( PSW0) 奇偶检验标志位。每条指令执行完后,该位始终跟踪指示累加器A中l的个数。如结果A中有奇数个“l ”,则置P1,否则P0。常用于校验串行通讯中的数据传送是否出错。2无符号二进制数的减法基本规则:1-1=0 0-0=0 1-0=1 0-1=1 借位1 例3:0001 1011B0000 1101B=借位: 1 1被减数: 0 0 0 1 1 0 1 1减数: 0 0 0 0 1 1 0 1差: 0 0 0 0 1 1 1 027-13 =14 结果正确。 例4:0100 0100B10100101B =? 借位 1 1 1 1被减数: 0 0 0 1 1 0 1 1减数: 1 0 1 0 0 1 0 1差: 1 1 1 1 0 1 1 0 运算中,产生了借位,硬件会自动地将进位标志置1,以便程序员处理。3无符号二进制数的乘法 乘法规则: 00=0 例5:1111B1101B=? 01=0 1 1 1 1 10=0 1 1 0 1 11=1 1 1 1 11 1 1 11 0 0 1 0 1 11 1 1 1 1 1 0 0 0 0 1 1 4无符号二进制数的除法 除法的规则是乘法和减法之和例6:10011B101B=? 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 05BCD数的运算 以BCD码表示的数,叫BCD数,BCD数的运算遵守二进制运算规则。例7:13+14=270 0 0 1 0 0 1 1 BCD 130 0 0 1 0 1 0 0 BCD 140 0 1 0 0 1 1 1 BCD 27再看下列例子:例8:26+35=61 0 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1011超过了BCD码的范围,结果不正确, 0 1 1 0 超过1001,要进行加6调整 0 1 1 0 0 0 0 1 十进制数为61 结果正确 当低四位大于1001即十进制数9时,要进行BCD码调整即加6;另外,当低四位有进位时,也要进行加6调整。例9:29+38=67 0 0 1 0 1 0 0 1+ 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 结果为 61,低四位产生了进位,此时AF=1 0 1 1 0 加6调整 0 1 1 0 0 1 1 1 结果为67,正确 同样,在做减法时,也有类似问题,会出现半借位或低四位大于1001的情况,这样,需要进行减6调整。例10:39-16=23 0 0 1 1 1 0 0 10 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1 无借位,低四位也小于1001,结果正确。例11:36-19=17 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 有半借位,AC=1,低四位大于1001,需要进行减6调整 0 1 1 0结果为: 0 0 0 1 0 1 1 1 17 正确因此在做BCD码的加减法时,后面应进行十进制调整。6补码运算 引入补码后,计算机只存在加法运算。 例12:2015=5 即:20+(-15) 补码:20= 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 原码:-15=1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 反码:-15=1 1 1 1 0 0 0 0 结果为 1 0 0 0 0 0 1 0 1 补码:-15=1 1 1 1 0 0 0 1 产生了进位,CY=1, 丢失,正确例13:-20+15=-5原码:-20=1 0 0 1 0 1 0 0反码:-20=1 1 1 0 1 0 1 1补码:-20=1 1 1 0 1 1 0 0补码:+15=0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 真值为:-0 0 0 0 0 1 0 1即-5,正确例14:-20-15= -35 1 1 1 0 1 1 0 0 + 1 1 1 1 0 0 0 1 = 1 1 1 0 1 1 1 0 1 结果为:0100011 即35 虽然有进位,但是结果正确。当补码运算结果超过 128+12
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论