欢迎光临散文网 会员登陆 & 注册

第一章 数制和码制

2023-07-16 16:25 作者:天生我材必有用嗷  | 我要投稿

1.1 概述

数制:多位数码中每一位的构成方法和从低位到高位的进位规则称为数制。

码制:为了便于记忆和查找,在编制代码时总要遵循一定的规则,这些规则就称为码制。

1.2 几种常用的数制

十进制(D)、二进制(B)、八进制(O)、十六进制(H)...

多位任意进制(N进制)数展开式的普遍形式

1.3 不同数制间的转换

(1) 二 - 十六转换与二 - 八转换

二 - 十六转换:由于4位二进制数恰好有16个状态,而把这4位二进制数看作一个整体时,它的进位输出又恰好是逢十六进一,所以只要从低位到高位将整数部分每4位二进制数分为一组,同时从高位到低位将小数部分的每4位数分为一组,并将每一组代换为等值的十六进制数即可得到对应的十六进制数。

注意:分组位数不够时需补零,整数前补,小数后补(实际上是保证值不变)

    例如:(1100011 . 11)可以先补零为(0110 0011 . 1100)

二 - 十六转换示例

二 - 八转换与二 - 十六转换同理,只需改为 “将3位二进制数” 分为一组即可。

二 - 八转换示例

(2) 十六 - 二转换和八 - 二转换

十六 - 二转换实际上是二 - 十六转换的逆过程,只需要将每位十六进制数代换成等值的4位二进制数即可,相对简单。

十六 - 二转换示例

八 - 二转换同理,将每位八进制数代换成等值的3位二进制数即可。

八 - 二转换示例

(3) 二 - 十转换、八 - 十转换、 十六 - 十进制转换

这三种转换都是其他数制向十进制数的转换,只需要根据1.2所示展开式计算即可。

二 - 十转换示例

(4) 十 - 二转换、 十 - 八转换、 十 - 十六转换

在(1)中,已经掌握了二进制向八进制和十六进制的转换方式,所以这三种转换实际上只需要学会十 - 二转换即可,如果需要实现十 - 十六转换,可以考虑十 - 二 - 十六的转换过程。

十 - 二转换可以分为整数部分的转换和小数部分的转换两个步骤:

①整数部分的转换:

这里介绍定位减权法,这是个人认为十 - 二转换许多方法中最基本也最容易上手的方法。

定位减权法

“ 以173为例,比173小且与其最近的是128,则128对应位上取1,173 - 128 = 45,比128小一位的是64,45 < 64,则64对应位上取0,比64小一位的是32,45 > 32,则32对应位上取1,45 - 32 = 13,比32小一位的是16,13 < 16,则16对应位上取0... 可以得出十进制数173所对应的二进制数为10101101。”

上述过程实际上是把173分成128 + 32 + 8 + 4 + 1,初次接触这个思路可能会觉得不如除基取余法方便,但在我自己学习的过程中,我发现了定位减权法的优点,他是从高位往低位出结果的、便于对结果进行记录,而且在经常接触二进制数的情况下,二进制位权对应值实际上是很清晰的不需要刻意去记忆的。

当然,除基取余法也是一个不错的方法,思维方式因人而异,适合自己的方法才是最好的。

除基取余法示例

②小数部分的转换

乘基取整法:即用二进制数的基数2去乘十进制小数,第一次所得的整数为小数部分的最高位,把得到的数的小数部分再乘以该基数,所得的整数为次低位,依次类推,直至小数为0,所得的整数为目的数的最低位。

乘基取整法示例

1.4 二进制算术运算

1.4.1 二进制算术运算的特点

二进制算术运算

结论:如果我们能设法将减法操作转化为某种形式的加法操作,那么加、减、乘、除运算就全部可以用 “移位” 和 “相加” 两种操作实现了。

1.4.2 反码、补码和补码运算

原码:在二进制数的前面增加一位符号位,符号位为0表示这个数是正数,符号位为1表示这个数是负数。这种形式的数称为原码。

原码示例

反码:

反码表示

补码:

补码表示

总结

对正数而言,原码 = 反码 = 补码

对负数而言,原码的符号位不变、其他位取反,得到反码;末位再加1,得到补码。

计算方式:两个原码的计算,可以转化为对应补码的计算,最后再将结果(补码计算的结果也是补码)逆转换为对于的原码即可。即 “变换 - 计算 - 反变换” 的过程。

补码计算示例

1.5 几种常用的码制

一、 十进制代码

几种常见的十进制代码

①8421码:又称BCD码,是十进制代码中最常用的一种。4位依次所对应的权与二进制相同。

②恒权代码:每一位的权是固定不变的代码。

③余3码:可以看作是 “8421” + 0011 的结果,优点是:用余3码做十进制加法运算时,若两数之和为10,正好等于二进制数的16,于是便从高位自动产生进位信号。

④余3循环码:从格雷码(下文会讲到)的第四位(0010)开始,是一种变权码。主要特点是相邻的两个代码之间仅有一位的状态不同。

二、格雷码(又称循环码)

常用4位格雷码与8421-BCD码比较

小tips:4位典型格雷码的顺序记忆方式(需要借助卡诺图,后续会提及)

画出4位变量卡诺图,典型格雷码顺序如下所示:

4位格雷码顺序与卡诺图的关系

三、美国信息交换标准代码(ASCII码)

ASCII码


第一章 数制和码制的评论 (共 条)

分享到微博请遵守国家法律