1. 各种进位计数制及二﹑八﹑十﹑十六进制数的相互转换
(1)r进位计数制: | ||||||||||||||||||
如果我们用r个基本符号(d1,d2,…,dr-1)表示数值N, N=DmDm-1Dm-2…D1D0D-1…D-k Di∈(d1,d2,…,dr-1),小数点在D0与D-1之间,并且满足“逢r进位”的规则,则称上述计数规则为“r进位计数制”。采用r进位计数制时,每一位Di的权为ri,因此数值N的实际值为:
常用的有二进制、八进制、十进制、十六进制等计数制。
|
(2) 二进制、八进制、十进制、十六进制转换 | ||||
l 二进制、八进制、十六进制转换为十进制:直接利用数值计算公式
整数部分:除r取余法。 小数部分:乘r取整法。 (r=2,8,16)
*十六进制转换为二进制:将十六进制数的每一位依次用4位二进制数表示。 *二进制转换为八进制:将二进制数从小数点开始分别向左和向右每3位一组划分(位数不够时补0),写出每组
|
2.定点数的编码
定点数:小数点位置固定的数据。 定点整数:小数点在最低位数的后面,即无小数。 N=NnNn-1…N1N0 (共n+1位) 数值范围:0≦N≦2n+1-1 定点小数:小数点在最高位(为0)的后面,即为纯小数。 N=N0N-1N-2…Nm (共m+1位) 数值范围:0≦N≦1-2-m
原码表示时,最高位为符号位,“0”表示正数,“1”表示负数 。
| ||||||||||
*小数原码表示 :
即当 X=0.x-1…x-m时,[X]原=0x-1…x-m (正数不变) X=-0.x-1…x-m时,[X]原=1x-1…x-m (负数将最高位变为1) m+1位定点小数原码的数值范围为 |X|≤1-2-m
*整数原码表示 :
即当X=xn-1xn-2…x0时,[X]原=0xn-1…x0 X=-xn-1xn-2…x0时,[X]原=1xn-1…x0 m+1位定点整数原码的数值范围为,|X|≤2n-1,即-2n+1≤X≤2n-1. 注意:原码表示中,0有两个编码,即00…0和10…0。另外,用原码表示数据时,乘除运算规则简单, | ||||||||||
(2)补码表示法. | ||||||||||
*定点小数补码表示:
即当X=x-1…x-m时,[X]补=0x-1…x-m (与原码相同)
负数的补码就是将原码的二进制位按位取反后在最末位加上1,或从最末位开始往左扫描,遇到第一个“1”以后,将其左边的各位按位取反可得负数的补码.两种方法等效. *定点整数补码表示 : 另有一种双符号位补码(也叫变形补码),它的符号有两位,“00”表示正数。“11”表示负数。双符号位补码在运算和加溢出判断中,非常方便,详见后面有关章节。 补码的特点是加减运算简单。 | ||||||||||
(3)反码表示法 | ||||||||||
*定点小数反码表示
反码表示运算不方便。“0”有两个编码([+0]反=00…0,[-0]反=11…1),实际中很少应用。 | ||||||||||
(4)移码表示法 (只用于整数 ) | ||||||||||
[x]移=2n+x 即对于n位二进制整数x=±xn-1xn-2…x1x0
,
注意:移码的符号位含与其它三种编码正好相反,“1”表示正数,“0”表示负数。三位数值位的移码和真值之间的关系如下图所示:
由上可知,所谓移码,就是将真值在数轴上向右移动一个常数,因而数码之间的大小顺序不变,比较两个移码的大小就可知相应两个数据的大小。 |
3、浮点数的编码
(1) 浮点数: | ||||||||||||||||||||||
小数点位置可移动的数据称为浮点数,可用下式表示:N=M*RE
其中,M—尾数,
当基数约定后,对浮点数的编码就只需对尾数和阶码部分进行编码。浮点数在机器中的形式如下:
尾数M用定点小数表示,阶码E是整数。 M乘以RE后小数点的位置改变,改变指数部分RE的值,小数点的位置随之变动,故称上述表示法表示的数据为浮点数。 | ||||||||||||||||||||||
(2) 浮点数的编码 | ||||||||||||||||||||||
阶码E一般用移码或补码表示,尾数用原码或补码表示。
| ||||||||||||||||||||||
(3)规格化浮点数 | ||||||||||||||||||||||
为了便于浮点数之间的运算与比较,也为了提高浮点数的精度,规定计算机中的浮点数尾数部分必须满足1/R≤|M|<1,也即,小数点后的第一位必须是有效数字。当尾数用补码表示,且R=2时,其规格化形式一般为:
上式表明,当尾数的最高数值位与符号位相反时,即为规格化形式。但对于M<0 有两种特殊情况需考虑。 *M=-1/2,按规定是规格化数,但[-0.5]补=1.10…0,与一般情况相悖,为便于硬件判断,特规定-0.5不 是规格化的数(对补码而言)。 *M=-1,因小数补码允许表示-1,且[-1]补=1.00…0.故将-1作为规格化数(对补码而言 ) | ||||||||||||||||||||||
(4)IEE754标准 | ||||||||||||||||||||||
现代计算机中,浮点数一般采用IEEE制定的国际标准,形式如下;
在IEEE754浮点数标准中,符号位也是“0”表示正数,“1”表示负数。阶码也用移码表示,尾数也是规格化表示,但为如下形式:1.ff---f.在实际表示中,整数位的1省略,称隐藏位 (临时实数不采用隐藏位方案)。由于尾数形式的变化,阶码部分也与一般移码不同,对短实数而言,[X]移=27+x-1=127+x,也就是说此种移码比一般移码的值小1,如.[810]移为13310 而不是13410。所以,短实数.长实数和临时实数的阶码偏移量分别为7FH、3FFH和3FFFH。单精度数所表示的数值为:(-1)5 1.ff---f*2e-127。 注意:浮点数的编码有多种方法,在实际应用时,首先一定要明确是哪种编码方法,分清各种编码方法的不同之处,这样才能不出差错。 |
4.文字的编码
(1) 西文字符的编码 目前常用的编码系统是ASCII码(American Standard Code for Information Interchange)。 | |||
ASCII码特点: *每个字符用7位二进制代码表示。在计算机中每个符号实际用8位表示,最高位置“0”或作为奇偶校验位。 *共有128个符号。其中95个可印刷字符(包括空格),其余为控制字符。 *字符0——9的高3位编码为011,低4位为0000——1001(正好为二进制形式的0—9),满足正常的排序关系,且大、小写英文一位字母编码的对应关系简单,大写字母的高2位编码10,低5位为00001-11010(为二进制形式的1—26),小写字母高2位为11,低5位也为0000—11010。 | |||
(2)中文编码 | |||
汉字编码分输入码、机内码和字形码等三大类。 汉字输入码 主要有数字编码、拼音编码和字形编码等。这几种编码方式都是利用相应的编码规则,用字母数字串代 替汉字,从西文标准键盘上输入汉字。 汉字机内码 用于汉字信息存储、交换、检索等的机内代码,一般用两个或三个字节表示一个汉字。为了区别于ASCII 码,汉字机内代码中字节的最高位均为“1”。 汉字字形码 根据汉字字形信息进行编码,存储在字形库中,用于汉字的输出,常用点阵表示汉字字形。 | |||
(3)十进制数的编码 | |||
*字符串形式 一个字节存放一个十进制的数位或符号,用连续的多个字节表示一个完整的十进制数据。
十进制数据的机内表示常用ASCII码。有前分隔字符串和串两种方式。 #前分隔字符串 符号位在数字位之前单独占用一个字节。字符“+”(2B)16表示正号,“-”(2D)16表 示负号。 #后嵌入字符串 将符号位嵌入最低一位数字里。规则:将“-”号变成(40)16与最低位数相加。“+”号省略。 上述两种表示方法主要用于非数值计算的应用领域,算术运算不方便。
用十进制数串表示十进制数据的特点是位长可变,但需给出首地址和串长。 |
5、 奇偶校验码、海明码和循环码的概念和编码范围 |
(1)数据校验码: 能发现错误或具有自动改正错误能力的数据编码。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(2)码距: 指任意两个合法编码之间对应位上数值不相同的位数。码距也称海明距离。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(3)最小码距:一种编码中各码字间距离的最小值称为该代码的最小码距do。 最小码距是数据编码的一个重要特征,其意义如下: 最小码距do 意义 1 唯一性。(每个码字都是合法码) 2 发现单个差错(不能确定位置) 3 纠正单个差错(或发现两个差错) 4 纠正单个差错并发现两个差错(或发现三个差错) 5 纠正两个差错 …… …… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(4) 奇偶校验码: 是一种最简单的检错码,能查出一位出错或奇数位出错。通常为每个字节增加一个检验位,使合法编码 码距由1增加到2。主要用于存储器读写、检查和ASCII码传送过程中的检查。 l 奇校验:通过设置检验位的值为0或者1,使编码中“1”的个数为奇数。 l 偶校验:通过设置检验位的值为0或者1,使编码中“1”的个数为偶数。 校验位的设置由专用电路实现。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(5)海明码: 由海明提出的能检出多位出错并能自动纠正一位或几位出错位的编码方法。主要用于存储器的读写检查。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(6)循环码: 一种常用的纠错码,合法码字经循环移位后仍为合法码字。在磁介质存储器和计算机之间通信方面(主要是串行 |