计算机中数的表示方法与编码技术文档格式.docx
- 文档编号:19940321
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:12
- 大小:41.40KB
计算机中数的表示方法与编码技术文档格式.docx
《计算机中数的表示方法与编码技术文档格式.docx》由会员分享,可在线阅读,更多相关《计算机中数的表示方法与编码技术文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
26+1·
25+1·
24+1·
23+1·
22+1·
21+1·
20+1·
2-1
=128+64+32+16+8+4+2+1+0.5=255.5
⒊十六进制计数(用H表示)
特点:
十六个独立的数字:
0123456789ABCDEF;
逢十六进一;
权为十六;
任一十六进制数:
16n-1+αn-2·
16n-2+…+α1·
161+α0·
160+
16-1+α-2·
16-2+…+α-m·
16-m
3E8H=3·
162+14·
16+8=1000
十六进制数本质上可以说与二进制数相同,将二进制数按四位划分,有:
二进制数十六进制数十进制数
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15
因此,同一个数有多种表示方法,一定要注明采用什么数制,否则,容易引起误解,如:
11十进制数为:
11
二进制数为:
3表示为:
11B
十六进制为:
3
二、数制之间的转换
主要是二进制和十进制之间的转换,因为十六进制可以很方便地转化成二进制。
二进制转十进制前面已经讲过,下面主要讲十进制转二进制。
对十进制整数,采用方法:
除二取余法:
53
53÷
2=26余1
26÷
2=13余0
13÷
2=6余1
6÷
2=3余0
3÷
2=1余1
1÷
2=0余1
由此得到:
53=110101B(注意:
后面的余数为高位)
对十进制小数,则采用乘二取整法:
0.375
1.375×
2=0.75取整数部分0
1.75×
2=1.5取整数部分1
1.5×
2=1取整数部分1
由此得到:
十进制数0.375=0.011B(取数高位到地位顺序是按乘数的先后顺序)
混合数则分别按整数部分和小数部分计算.
53.375=110101.011B
三、计算机中的数和编码
前面我们讨论的都是无符号数,有符号数在计算机中如何表述了?
十进制中,用符号正负来表示:
+4,–4。
1.带符号数的表示方法
用最高位来表示符号,0表示为正数,1表示为负数。
有三种表示方法:
原码反码和补码。
原码:
数值用绝对值表示,
符号用最高位来表示,“0”表示为正数,“1”表示为负数。
正数的原码是该数的二进制表示:
+4=00000100
负数的原码将其符号位变成1即可。
–4=10000100
八位二进制有符号数原码能表示的范围是:
正数00000000∽01111111,即:
+0∽+127
负数10000000∽11111111,即:
-0∽-127
反码:
正数的反码与原码相同,负数的反码是该数的绝对值取反(含符号位)。
+4原码00000100反码:
00000100
-4原码:
10000100反码:
11111011
反码的范围是:
正数:
00000000∽01111111+0∽+127
负数:
11111111∽10000000-0∽-127
原码和反码都存在两个缺点:
★存在+0和–0,不和谐。
★必须有减法运算,这就增加了计算机的复杂性。
补码:
正数的补码和原码一样,即最高位(符号位)为0,其余为数值位。
负数的补码为反码加1;
+4,原码:
00000100反码:
00000100补码:
-4,原码:
11111011补码:
11111100
补码表示的范围:
00000000∽01111111即:
0∽127
11111111∽10000000即:
-1∽-128
引入补码后,减法运算可以由加法来代替,这就简化了计算机的结构。
20–5=20+(-5)
计算机只能识别二进制数,那么计算机是如何识别十进制数字和其他的符号,图表的呢?
在计算机中,是以二进制的组合来表示的,这就是二进制编码。
计算机中根据信息对象的不同,编码方式也不一样,常见的有BCD码、ASCⅡ码。
2.二—十进制编码(BCD码)
虽然十进制数可以转换成二进制数,但转换很慢,难以一下子看出,如:
十进制数789,
用二进制表示为:
1100010101。
为了方便的用二进制来表示十进制数,人们提出了既有二进制数特点又有十进制数特点的编码—BCD码。
十个十进制数字可以用四位二进制数来表示,选取四个有特点的二进制数,0001,0010,0100,1000,十进制中分别为:
1,2,4,8;
其他六个数字为这四个编码的组合,因此又叫做8421BCD编码。
下面是8421BCD编码表:
十进制数8421BCD数二进制数
000000000
100010001
200100010
300110011
401000100
501010101
601100110
701110111
810001000
910011001
10000100001010
11000100011011
12000100101100
13000100111101
14000101001110
15000101011111
按照上述编码,十进制数789的BCD码为:
011110001001,这样就比较方便。
1234.789的BCD码为:
0001001000110100.011110001001
3.ASCⅡ码—AmericanStandardCodeforInformationInterchange
用七位二进制编码来表示十进制数字0—9,英文字母a—z,A—Z,还有一些控制字符,最高位用于奇偶校验。
数字:
0∽930H∽39H
大写英文字母A∽Z41H∽5AH
小写英文字母a∽z61H∽7AH
美国信息交换标准代码ASCⅡ编码表(7位代码)
四、计算机中二进制数的运算
十进制,基本的运算为:
加、减、乘、除。
下面我们讨论二进制数的加、减、乘、除。
1.无符号二进制数的加法
二进制数只有两个数字:
0和1,其加法规则为:
★0+0=0
★0+1=1
★1+1=0进位1
★1+1+1=1进位1
例1:
00001101Bmem1
+00001101Bmem2
00011010Bmem3
十进制数为:
13+13=26
若计算机字长为八位,结果不会有问题。
下面看另外一个加法:
例2:
10110101Bmem1
+10001111Bmem2
101000100Bmem3
181+143=324
结果为九位二进制数,产生了进位,
由于mem3只有八位,因而第九位的1会丢失,在men3中实际上只有01000100B
即十进制数的68,明显错误。
为了处理这种问题,在CPU内部专门设置了一个寄存器,把运算结果的状态表示出来,以便程序进行处理。
对8051:
是程序状态寄存器PSW
PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供程序查询或判别之用。
各位的含义及其格式如下:
D7
D6
D5
D4
D3
D2
D1
D0
CY
AC
F0
RS1
RS0
OV
P
CY(PSW.7)进位标志位。
在执行加法(或减法)运算指令时,如果运算结果最高位(位7)向前有进位(或借位),CY位由硬件自动置“1”;
如运算结果最高位(位7)无进位(或借位),则CY清“o”。
CY也是8051在进行位操作(布尔操作)时的位累加器。
AC(PSW.6)半进位标志位,也称辅助进位标志。
当执行加法(或减法)操作时,其运算结果(和或差)产生由低半字节(位3)向高半字节有半进位(或借位)时,AC位将被硬件自动置“1”,否则AC被自动清“o”。
OV(PSW.2)溢出标志位。
当进行补码运算时,如有溢出,即当运算结果超出–128—十127的范围时,OV位由硬件自动置OV=1;
无溢出时,OV=0。
PSW.1为保留位,805l末用,8052为Fl用户标志位。
P(PSW.0)奇偶检验标志位。
每条指令执行完后,该位始终跟踪指示累加器A中l的个数。
如结果A中有奇数个“l”,则置P=1,否则P=0。
常用于校验串行通讯中的数据传送是否出错。
2.无符号二进制数的减法
基本规则:
★1-1=0
★0-0=0
★1-0=1
★0-1=1借位1
例3:
00011011B—00001101B=
借位:
11
被减数:
00011011
减数:
00001101
差:
00001110
27-13=14结果正确。
例4:
01000100B–10100101B=?
借位1111
10100101
11110110
运算中,产生了借位,硬件会自动地将进位标志置1,以便程序员处理。
3.无符号二进制数的乘法
乘法规则:
0×
0=0例5:
1111B×
1101B=?
1=01111
1×
0=0×
1101
1=11111
1111
1001011
11000011
4.无符号二进制数的除法
除法的规则是乘法和减法之和
例6:
10011B÷
101B=?
000111
101100011
101
00111
0
5.BCD数的运算
以BCD码表示的数,叫BCD数,BCD数的运算遵守二进制运算规则。
例7:
13+14=27
00010011BCD13
00010100BCD14
00100111BCD27
再看下列例子:
例8:
26+35=61
00100110
00110101
01011011
1011超过了BCD码的范围,结果不正确,
0110超过1001,要进行加6调整
01100001十进制数为61结果正确
当低四位大于1001即十进制数9时,要进行BCD码调整即加6;
另外,当低四位有进位时,也要进行加6调整。
例9:
29+38=67
00101001
+00111000
01100001
结果为61,低四位产生了进位,此时AF=1
0110加6调整
01100111结果为67,正确
同样,在做减法时,也有类似问题,会出现半借位或低四位大于1001的情况,这样,需要进行减6调整。
例10:
39-16=23
00111001
–00010110
00100011无借位,低四位也小于1001,结果正确。
例11:
36-19=17
00110110
—00011001
00011101有半借位,AC=1,低四位
大于1001,需要进行减6调整
—0110
结果为:
0001011117正确
因此在做BCD码的加减法时,后面应进行十进制调整。
6.补码运算
引入补码后,计算机只存在加法运算。
例12:
20—15=5即:
20+(-15)
补码:
20=0001010000010100
原码:
-15=1000111111110001
反码:
-15=11110000结果为100000101
-15=11110001
产生了进位,CY=1,丢失,正确
例13:
-20+15=-5
原码:
-20=10010100
-20=11101011
-20=11101100
+15=00001111
11111011真值为:
-00000101即-5,正确
例14:
-20-15=-35
11101100
+11110001
=111011101结果为:
–0100011即–35
虽然有进位,但是结果正确。
当补码运算结果超过–128——+127时,会产生溢出,计算结果错误。
例15:
120+105=225
01111000
01101001
11100001补码结果为:
–0011111即–31,错误
两个正数相加(补码),结果超过了127,产生了溢出,硬件将自动置位OV=1
例16:
–120–105=–225
10001000
10010111
100011111结果为+31,错误
原因是结果超过了–128,产生了溢出。
结论:
补码运算时,应考虑溢出,
无符号数运算时,应考虑进位,
BCD码运算时,应考虑半进位。
重点:
运算后,PSW的状态。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 表示 方法 编码 技术
![提示](https://static.bdocx.com/images/bang_tan.gif)