一、带符号数的表示法
计算机在进行算术运算时,必须能够表示正值和负值两种数字,习惯的作法是在数值 前加一个正号(+)或负号(一),这样表示的数称为带符号数。
因为计算机按二仅制规则进行运算,它只能识别“0”和“1” 两种符号,所以数字的正负号也必须用“0”和“1”来编码,为此,专门设置了一个称为“符号位”的附加位并置于数值的最高有效位MSB(Most Significant Bit)之前,以表示该数字的正和负,按常规约定,“0”表示正号,“1”表示负号。
例如: +9210 = +1011100 2(以 7位二进数表示数值)
9210 = 1011100 2
这里的 十1011100 2 与 一 1011100 2 称为“真值”,以 X表示。而X在机器中的表
示形式为
十1011100 2 =01011100 2
一1011100 2 =11011100 2
这里的01011100 2与11011100 2中包含了数码化了的符号位“0”和“1”,这种将符号数码化后的数是计算机能识别的数,称为“机器数”,以[X]表示。
带符号数有3种表示方法,筒述如下。
原码表示法
由前述可知,“真值”是带“+”“一”号的二进制数,若将真值中的符号“十”用符号位“0”表示,符号“一 ”用符号位“1”表示,这种表示法称为“原码表示法”。因此 01011100 2 及11011100 2 都是原码。
设机器字长为n,最高位为符号位,则真值X的整数原码表示为
而真值X的小数原码表示为
例如:
则
(二)反码表示法
正数的反码表示与原码相同。负数的反码表示为:原码除符号位外,数值位按位取反——即“0”变“1”,“1”变“0”。
例如:
则
设机器字长为n,最高位为符号位,则真值为X的整数反码表示为
而真值X的小数反码表示为
(三)补码表示法
上述机器数的原码表示法中“O”有两种表示法,即0000000O。和IO000000。;反码表 示法中“0”也有两种表示法,即00000000和1111 1111。因此在这二种表示法中8位二 进制数只能表示 255个数,即一 127一 + 127,有一个重码。
1. 补码与“模”
以钟表对时为例,设当前标准时间为5点正,对于指示为9点的钟表,可采用两种方法校准,一是将时针退9 - 5 = 4格,一是将时针向前拔 12 - 4 = 8格。这两种方法都能对准到5点。可见在这一命题中减 4和加 8是等价的,称8是(-4)对 12 的补码,用数学 公式表示为 - 4 = +8 (mod 12)
mod 12是指 12为模数,这个模”表示自动被被丢掉的值,上式称为“同余式”。
上式也说明 - 4 和 +8 是互补的(对模 12而言),从该式也可见负数用补码表示时, 可以把减法转化为加法,在计算机中用硬件实现比较方便。
2. 补码表示式
设机器字长为n位,则对整数而言其模为2 n ,真值X的补码表示为
而对小数而言,其模为2,真值X的补码表示为
例如 X= -1010011,n=8
则 [X]补=28+[-1010011]=100000000-1010011=10101101
通常可以利用原码求补码,正数的补码表示与原码相同。负数的补码表示为:原码除符号位外,数值位逐位求反后再加1。
在补码表示中,0具有唯一的编码00000000(8位),8位二进制补码能表示的数值范围为-128~+127。
8位二进制数表示的无符号数,带符号数(原码、反码、补码)的对照如表1-1所示。
表1-1 数的表示法
二进制数码表示 |
无符号二进制数 |
原 码 |
补 码 |
反 码 |
00000000 |
0 |
+0 |
+0 |
+0 |
00000001 |
1 |
+1 |
+1 |
+1 |
00000010 |
2 |
+2 |
+2 |
+2 |
┆ |
┆ |
┆ |
┆ |
┆ |
01111100 |
124 |
+124 |
+124 |
+124 |
01111101 |
125 |
+125 |
+125 |
+125 |
01111110 |
126 |
+126 |
+126 |
+126 |
01111111 |
127 |
+127 |
+127 |
+127 |
10000000 |
128 |
-0 |
-128 |
-127 |
10000001 |
129 |
-1 |
-127 |
-126 |
10000010 |
130 |
-2 |
-126 |
-125 |
┆ |
┆ |
┆ |
┆ |
┆ |
11111100 |
252 |
-124 |
-4 |
-3 |
11111101 |
253 |
-125 |
-3 |
-2 |
11111110 |
254 |
-126 |
-2 |
-1 |
11111111 |
255 |
-127 |
-1 |
-0 |
二、数的定点和浮点表示方法
计算机中常用的数据表示格式有两种:一种是定点数,即事先均约定机器所有数据的小数点位置是固定不变的,且通常将数据表示为纯整数或纯小数,上一小节所述都为定点
数表示;另一种是浮点数。二者的格式如图1-2所示。
图1-2 定点数与浮点数
(一) 二进制的定点表示法
小数点固定的数称为“定点数”。
一个字长为 n 位的定点数,其中最高位表示符号,称为“符号位”,其余(n—1)位 用来表示数值,称为“数值位”。
对定点整数,n位二进制数(包括符号位)所表示的整数X范围是
0 ≤ |X| ≤ 2 n-1 -1
对定点小数,n位二进制数(包括符号位)所表示的小数X范围是
0 ≤ |X| ≤ 1 - 2 n-1
(二) 二进制数的浮点表示法
对于一些绝对值很大的数,或要求表示的数值范围很广的数,经常采用浮点表示法。 一个二进制数N可用如下形式表示
N=M·RE
这里M称为浮点数的尾效,E称为阶码,M为定点小数、E为定点整数,R为阶码的基教,在二进制数中R=2。
在计算机中浮点数通常表示为如图1-3格式。
浮点数格式
一般阶码用补码表示,便于指数加减运算。尾数可以取补码或原码,但常用原码表示, 因为原码便于乘除运算,而进行加减运算时,转换成补码也方便。。
若一个浮点数的阶码有m位(不包括阶符),尾数有K位(不包括尾符),则可表示的数的最大绝对值为:阶符为正、阶码和尾数全为“1”时,即
|N| max =(1-2 –K )× 22 n-1 -1
而可表示的数的最小绝对值为:阶符为负,阶码为全“1”,尾数最低位为“1”,其余为“0’时,即
用浮点数进行运算,
则在运算前首先要“对阶”,且按大的阶对阶,否则可能丢失数字的有效位而引起误差。
一般浮点数都以“规格化”形式表示,若是原码尾数,最高尾数为“l”是规格化形式;若是补码尾数,则正数的最高尾数位为“1”,负数的最高尾数位为“0”才是规格化数,即尾数的最高位与符号位必须相反。
采用“规格化”形式表示浮点数可以保留最多的有效数字,提高运算精度。
例如 数 0.000101×2 5 的规格化表示为 0.101×2 2 。
在浮点数表示中,当一个数的阶码大于机器所能表示的最大阶码时,产生“上溢”,转入“溢出中断”处理;当一个数的阶码小于机器所能表示的最小阶码或尾数为 0 时,则产生“下溢”,下溢时机器一般将此当作“机器零’来处理。
最后需说明的是,浮点数格式除图 1-3 所表示的格式外,还可如图 l-4 所示。
图1-4 浮点数的另一格式表示
三、算术运算的基础——定点数的加减运算
计算机通常采用二进制来表示数,因为采用二进制计数在电路上易于实现,且稳定可靠,另外,二进制的运算规则简单。
二进制的运算规则为
带符号数在机器中有多种表示方法,最常用的有三种,即原码、反码和补码。同一种算术运算,对于不同的数码表示法有不同的规则。由于补码表示法在同一个电路既可用于元符号数相加,又可用于有符号数相加,同时利用补码运算能使减法转换为加法,因此目前绝大多数计算机都采用补码表示法来进行加减运算。
(一)补码的加减运算规则
设
为两个n位补码表示的二进制小数,Xs、Ys为两数的符号位,在加减运算中同数据位一起参与运算。
则补码数的加减运算规则为
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补+[-Y]补
可见,补码的加法运算只要把两个补码数直接相加(包括符号位在内)就能得到和数的补码表示。而减法运算可以通过加法运算来实现,只是在运算之前,必须对[Y]补进行一次求补运算,求得[-Y]补。即将减数的补码表示[Y]补变成其负数的补码表示[-Y]补,其转换过程为:将[T]补的各位(包括符号位的代码)取反加“1”。
(二)加减运算中溢出的判别
两个定点数经过加减运算后,其结果(和数或差数)超过了定点数的表示范围,就会发生溢出,从而导致运算结果出错,因此在加减运算后必须判别是否发生溢出。
判别溢出的常用方法有三种:
1.符号比较法
两个同符号数相加,若“和数”符号与原数符号不同,则表示发生溢出;两个异符号数相减,若“差数”符号与减数符号相同,则也表示发生溢出。而两异符号数相加或两同符号数相减是不会发生溢出的。
例1 [X]补=1.0011,[Y]补=1.0101
则 [X+Y]补=[X]补+[Y]补=1.0011+1.0101=10.1000=0.1000
(符号位前的“1”自动丢弃)
本例中,“和数”的符号位(“0”)与原数的符号位(“1”)相异,发生溢出。
例2 [X]补=0.1010,[Y]补=1.1001
则 [-Y]补=0.0111
[X-Y]补=[X]补+[-Y]补=0.1010+0.0111=1.0001
本例中,“差数”的符号位(“1”)与“减数”的符号位(“l”)相同,发生溢出。
采用这种判别法必须保留加法运算中“加数”和减法运算中“减数”的符号,这是可以实现的,因为在加减法运算中“加数”及“减数”一般是保持不变的。
2. 双进位法
加减运算后“和数”及“差数”中的符号位的进位输入Cin(即数值位的最高位向符号位的进位)与进位输出Cout(即符号位在运算中向高一位的进位)相异,则有溢出,表示为
以上述两例说明之:
例1 运算过程中
则 ,有溢出
例2 运算过程中
则 ,有溢出。
3. 双符号位法
对参加运算的数在运算过程中采用两个符号位,若运算结果“和数”或“差数”的两个符号位不相同,表示结果有溢出,而运算最后结果仍取一个符号位。
仍以上两例说明之:
例1 [X]补=1.0011,[Y]补=1.0101
则 [X+Y]补=[X]补+[Y]补=11.0011+11.0101=10.1000=0.1000
两个符号位为10,相异,有溢出
例2 [X]补=0.1010,[Y]补=1.1001
则 [-Y]补=0.0111
[X-Y]补=[X]补+[-Y]补=00.1010+00.01111=01.0001=1.0001
两个符号位为01,相异,有溢出。
再举两例:
例3 [X]补=0.0100,[Y]补=0.1010
则 [X+Y]补=00.0100+00.1010=00.1110=0.1110
两个符号位为00,相同,无溢出
例4 [X]补=1.0111,[Y]补=0.0001
则 [-Y]补=1.1111
[X-Y]补=[X]补+[-Y]补=11.0111+11.1111
两个符号位为11,相同,无溢出
在例1中,结果的双符号位为10,表示两个负数之和小于计算机所能表示的最小负数,称为“下溢”(“10”也表示负数被正数相减后所得结果小于计算机所能表示的最小负数);例2中,结果的双符号位为01,表示正数被负数相减后所得结果大于计算机所能表示的最大正数,称为“上溢”(“01”也表示两个正数之和大于计算机所能表示的最大正数)。
四、二进制信息编码
所谓二进制信息编码是指用二进制代码来表示计算机所要处理的信息——数值、数字、字母和符号等,一般表示为若干位二进制码的组合。
(一)BCD码(二——十进制码)
通常用4位二进制数来表示1位十进制数,表示的方法很多,最常用的是采用标准8421位权制的二进制代码,称为“8421BCD码”, BCD即Binary Coded Decimal——二进制编码的十进制数。凡是用若干位(一般是4位)二进制数码来给l位十进制数编码的都称为 BCD码(二一十进制码),“842lBCD码”是 BCD码的一种。 842lBCD码同十进制数、二进制数的关系如表1-2所示。
表1-2 十进制数、二进制数和BCD码对照表
十进制 |
二进制 |
8421BCD码 |
十进制 |
二进制 |
8421BCD码 |
0
1
2
3
4
5
6
7 |
0000
0001
0010
0011
0100
0101
0110
0111 |
0000
0001
0010
0011
0100
0101
0100
0111 |
8
9
10
11
12
13
14
15 |
1000
1001
1010
1011
1100
1101
1110
1111 |
1000
1001
0001 0000
0001 0001
0001 0010
0001 0011
0001 0100 0001 0101 |
BCD码比较直观,看到一个用BCD码表示的数,可以立即写出该数的十进制表示。例如1000 1001 0011. 0111 0110 0100BCD=893.76410。
(二)ASCⅡ码
目前在计算机中应用最广泛的字符编码系统是ASCⅡ码(American standard Code for Information Interchange,美国信息交换标准码),标准的ASCⅡ码由7位二进制代码组成,可表示 27=128种不同的字符,包括十进制数字0~9,英文26个字母大写与小写,标点符号,数据控制的其他专用字符。ASCⅡ字符编码表见表1-3。
在计算机系统中,数据传送的基本单位是字节一一8位,因此在一个字节中存放ASCⅡ代码时,最高位b7常用作奇偶校验位,用以判别数码传送是否正确,b7这一位的数值由奇偶校验的类型决定。
偶校验:是指包括奇偶校验位在内,所有“1”的位数之和是一个偶数。例如,数字“3”的ASCⅡ代码为“0110011”,因为代码中有4个“1”,是偶数,所以奇偶校验位B7=“0”,则数字“3”的带偶校验的ASCⅡ代码为“00110011”。
奇校验:是指包括奇偶校验位在内,所有“1”的个数为奇数。显然,此时数字“3”的带奇校验的ASCⅡ代码为“10110011”。
(三)汉字编码
在我国要推广普及计算机,必须解决在计算机上输入、处理和显示汉字的问题,其关键是汉字编码问题。
1. 汉字的输入编码
目前较常用的输入码有①数字编码(常用的是国标区位码,优点是无重码,且输入码与内部码的转换较方便,缺点是代码难记);②拼音码(以汉语拼音为基础的输入方法,优点是熟悉汉语拼音者即能使用,缺点是重码率高,需过去时行同意字选择,影响输入速度);③字形码(按汉字的字形进行编码,最常用的是五笔字型码)。另外还有词组输入、联想输入等多种快速输入方法。
2. 国标码与汉字机内码
国标码是国家标准汉字编码的简称,该编码集的全称是信息交换用汉字编码字符集——基本集,国家标准编号为GB2312—80,又称为 GB2312—80编码
国标码规定:一个汉字用两个字节表示,每个字节只用前7位,最高位都未作定义,为书写方便,常用4位十六进制数来表示一个汉字。
国标码是一种汉字交换码,其主要作用是:用于统一不同的系统之间所用的不同编码。
汉字机内码是汉字在计算机部存储、运算、处理的代码,一般采用两个字节表示,两个字节的最高位均规定为“1”,例如在国标码的两个七位编码的最高位之前各加一个“1”,即形成了两个字节的汉字机内码,简称“内码”。
3. 汉字字模码
字模码是用点阵表示的汉字字形代码,是汉字的输出形式,又称“字形码”。
本文标签:广东自考 工学类 微型计算机原理及应用学习笔记 计算机的运算基
转载请注明:文章转载自(http://www.gdzkw.net)
热点关注: