计算机组成原理个人总结(2)
数据的表示和运算
(一)数制与编码
进位计数制及其相互转换
进制:
- 二进制。计算机中用得最多的是基数为2的计数制,即二进制。二进制只有0和1两种
数字符号,计数“逢二进一”。它的任意数位的权为2i, i为所在位数。 - 八进制。八进制作为二进制的一种书写形式,其基数为8,有0~7共8个不同的数字符
号,计数“逢八进一”。 因为r=8=23, 所以只要把二进制中的3位数码编为组就是一
位八进制数码,两者之间的转换极为方便。 - 十六进制。十六进制也是一进制的一 种常用书写形式, 其基数为16,“逢十六进一”。每个
数位可取0-9.A.B、C.D、E、F中的任意一个,其中A、B、C、D、E、F分别表示10~15。因为r=16=24,因此4位进制数码与1位十六进制数码相对应
不同进制数之间的相互转换
(1)二进制数转换为八进制数和十六进制数
在转换时应以小数点为界。
整数部分:在从小数点开始往左数,将一串二进制数分为3位(八进制)一组或4位(十六进制)一组,在数的最左边可根据需要加“0”补齐;对于小数部分,从小数点开始往右数,也将一串二进制分为3位一组或4位一组,在数的最右边也可以根据需要加“0”补齐。最终使总的位数为3或4的整数倍,然后分别用对应的八进制数或十六进制数取代;
例: 将二进制数 1111000010.01101 分别转换为八进制数和十六进制数
(2)任意进制数转换为十进制数
将各位数码与他们的权值相乘在相加。
(3)十进制数转换为任意进制数
通常采用基数相乘法,对整数部分用除基取余法,对小数部分用乘基取整法,最后将整数和小数拼接在一起。
例:将十进制数123.6875转换成二进制数
整数部分
小数部分:
结果为:(1111011.1011)2
注意:小数和整数不一样,整数可以连续表示,但小数是离散的。二进制的小数只能表示1/2,1/4,……,1/2n,因此无法表示所有的十进制小数。
真值和机器数
带“+”或“-”符号的数为真值。
用0,1这种表示正负的数称为机器数。
BCD码
二进制编码的十进制通常采用4位二进制数来表示一位十进制数中的0~9这十个数码。但4位二进制数可以组合出16种代码,因此必有6种状态为无效码。
(1)8421码:
权值按8,4,2,1由高到低来表示。若两个8421码相加之和小于等于(1001)2即(9)10,则不需要修正;若相加之和大于等于(1001)2即(9)10,则要加6修正(从1010到1111这六个为无效码)
(2)余3码
这个是在8421码的基础上加(0011)2形成的,因为每个数都余“3”,因此称为余3码。
(3)2421码
也是一种有权码,权值按2,4,2,1由高到低来表示。特点是大于等于5的4位二进制数中最高位为1,小于5的最高位为0.如5→1011而非0101.
字符与字符串(了解)
ASCII码:表示10个十进制数码,52个英文大写字母和小写字母以及一定量的专用符号(如$、%、^、&、*),共128个字符。
汉字的表示和编码
校验码
1.奇偶校验码
码距为等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能够检测出偶数位错误,增加的冗余位称为奇偶校验位。
奇校验码:整个校验码(有效信息位和校验位中)“1”的个数为奇数。
偶校验码:整个校验码(有效信息位和校验位中)“0”的个数为偶数。
例 :
1001101 11001101(奇校验)01001101(偶校验)
1010111 01010111(奇校验)11010111(偶校验)
海明(汉明)校验码
实现原理:
在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,还能指出错位的位置,为自动纠错提供依据。
L-1=D+C且D>=C
L:编码最小码距 D:检测错误的位数 C:纠正错误的位数
在海明码中,为了达到检测和纠正一位错,校验的位数k应满足2k>=n+k+1,其中n为信息位的位数.若在纠正一位错的情况下还要能够发现两位错,则还需在增加一位校验位,即需要满足2k-1-1>=n+k
循环冗余校验(CRC)码
CRC接收端检测出某一位数据错误后,纠正的方法是:1.请求重发2.删除数据3.通过余数值自动纠正。
相关一些知识
- ASCII编码:使用8位二进制代码,最右边一位是0。
ASCII码由7位二进制代码表示,从000000到11111共128种编码。但由于字节是计算
机存储的基本单元,ASCI码仍以一字节存入一个ASCII字符,只是每字节中多余的一 位即最高
位(最左边-位)在机内部保持为“0”。 - 校验码:1.任意两个码字之间最少变化的二进制位数称为码距,码距大于等于2的数据校验码开始具有检错的能力。2.码距越大,检错、纠错能力越强。奇偶校验码的码距等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误;海明码的码距大于2,因此不仅可以发现错误,还能指出错误的位置。3.仅靠增加奇偶校验位的位数不能提高正确性,还要考虑码距。
- 在大量数据传送的过程中,常用且有效的校验法是CRC校验。
持续更新ing~