❶ 进位记数法
下面一起来了解一下如何用符号来表示数据,这里我们采用进位计数法这样的方法。
-
基数的介绍与区分
-
X进制中的X代表的是基数,也即每一个符号位所能够提供的符号数量,
比如二进制在每个符号位能提供2个符号数量(0与1),十六进制则能提供16个符号数量(0/1/2/3/4/5/6/7/8/9/A/B/C/D/E/F)。
-
为了区分不同基数下的计数,通常可以采用两种形式——
一种是下标形式:(1001)2 (4A)16
另一种是在后面加上字母: 如H代表十六进制 3CH,B代表二进制 10001B
-
-
位权是什么?
比如任意一个r进制数,则一个符号所代表的权重与它离小数点的距离有关
(rn , rn-1, ......r0, 小数点,r-1, r-2, ......r-m )
十进制值位值位权
-
计算机组成原理中的计数法
-
大基数与小基数的计数法在计算机组成原理中的差别:
基数大(十进制) 基数小(二进制) 位数(指相同的数据需要的表示位数) 少(5) 多(101) 机器要存储的运算规则数(乘法为例) 10*10=100 2*2=4 -
从上面的讨论可以看出基数大与基数小各有优劣,虽然十进制更加符合人类的习惯,但是在计算机中选择的是二进制,这是因为:0与1可以方便地对应到物理器件的状态,如高电平、低电平;开关的通和断;灯泡的亮和灭;以及一些磁体的磁场的方向,方便计算机的处理
-
❷ 进制转换
1)十进制与任意进制互相转换
1️⃣ 任意进制转十进制
十进制值位值位权
为计算方便,可以记忆常见的2n次方
2️⃣ 十进制转任意进制
-
整数部分-除基取余法
-
小数部分-乘基取整法
注意,有可能乘不清,这个时候题目应该会规定保留位数
2)二进制与任意进制互相转换
1️⃣ 二进制与四进制、八进制、十六进制的转换
从四进制、八进制、十六进制写成二进制就是一个逆向的过程
2️⃣ 二进制转十进制的快速方法-BCD码
上面学习了任意进制转十进制的方法,当然也可以用于二进制转十进制,但是这种普适性的方法还是略显麻烦
对于二进制来说,还有更好、更快与十进制相互转换的编码方法——BCD码(Binary-Coded Decimal),这是一种快速转换、每1个十进制位对应4位二进制码的编码方法。
-
BCD码的映射关系
由于4个二进制位对应16种不同的状态,而BCD码只选取其中的10种来对应十进制的0~9,所以存在不同的映射方案,举例如下:
-
8421码:最常用的BCD码
-
余3码:8421码的平移3位版本 + (0011)2
-
2421码:改变权值定义
由于权重中出现了两次2,故有一些十进制数可以对应2种编码,比如6既可以对应0110,又可以对应1100,取决于用哪个位上的2。
为了消除这种歧义,规定:0
4必须不使用最高位的2, 59必须使用最高位的2
-
-
BCD码的运算规则
以下规则以8421码为例
-
基本规则:直接使用二进制码运算
-
+6修正:如果算出的结果超出了8421的映射表范围,那么+6(0110)修正,这起到一个手动进位的作用。
-
3)真值与机器数
我们知道真实的值是有正负的,这种正负在计算机中用0/1来表示,这样真值就对应到了机器数。
- 但是如果要判断这个机器数是正或者负之后再分类讨论计算,会大大增加计算机的运算量,有没有什么办法可以不分类讨论正负直接运算能得到正确的结果呢?答案就是使用适应运算规则的原码、反码、补码、移码。
- 如果要扩大机器数的表示范围,就可以使用浮点数。
❸ 各种码
1)ASCII码
1️⃣ ASCII码的定义
将常用的数字、字母、符号共128个字符一一对应成7位 ( 27=128 ) 二进制编码,这样就能把想要表达的符号转化成计算机所能理解的形式,而这些编码就叫做ASCII码。
2️⃣ ASCII映射表
3️⃣ ASCII的运算
运算这一块,基本只需要知道大写字母、小写字母、数字的编码是连续的即可
4️⃣ 汉字的表示与编码
2)字符串编码
❹ 校验码
1)奇偶校验码
奇偶校验码的出现是基于通信方面的要求。我们知道通信在使用比较长的链路传递信息的时候,信道有各种各样的不理想的因素,会导致传递的信号发生跳变,所以为了使接收方能判断出信号发生了跳变,专家们搞出了奇偶校验这一套理论。
奇校验码:在添加奇偶校验位之后,使整个校验码(有效信息位和校验位)中 “1”的个数为奇数。
偶校验码:在添加奇偶校验位之后,使整个校验码(有效信息位和校验位)中 “1”的个数为偶数。
ps. 无论是奇校验码还是偶校验码,其局限在于只能检测出跳变个数为奇数的传输误差
题目没有告诉校验位,默认最高位是校验位,其余位是信息位
2)海明校验码
\