1. 概述

数字电路所处理的各种数字信和号都是以数码形式给出的。不同的数码既可以用来表示不同数量的大小 ,又可以用来表示不同的事物或事物的不同状态。

数制

当数码用于表示数量大小的时候,多位数码中每一位的构成方法和从低位到高位的进位规则称为数制。

常用的数制有二进制八进制十进制、十二进制、十六进制

指向原始笔记的链接

码制

码制是用不同数码表示不同事物或者事物不同状态时遵循的原则。

码制的分类

码制主要有以下分类:

指向原始笔记的链接

指向原始笔记的链接

2. 几种常用的数制

2.1. 十进制

十进制

在十进制数中,每一位有 0~9 十个数码,所以计数的基数是 10。超过 9 的数必须用多位数表示 , 其中低位和相邻高位之间的关系是「逢十进一」。

任意一个多位的十进制数 均可展开为,

任意一个多位的十进制数 D 的展开式

是第 位系数,可以是 这 10 个数码中的任何一个;若整数部分的位数是 ,小数部分的位数为 ,则 包含从 的所有正整数和从 的所有负整数,整数部分的最高位为 ,最低位为 ;小数部分的最高位为 ,最低位为

指向原始笔记的链接

一个 N 位的十进制数表示为 个数字中的某一个:0,1,2,3,,称为数的表示范围(range)。

指向原始笔记的链接

如果用 取代上式中的 10,即可得到多位任意进制的( 进制)数展开式的普遍形式。

N 进制数展开式的普遍形式

称为计数基数; 为第 的系数; 称为第 位的权。

指向原始笔记的链接

2.2. 二进制

二进制

二进制和十进制一样,也是一种进位计数制,但是它的基数是 2,即逢二进一。每一位仅有 两种可能的数码。

二进制数的展开式

为第 的系数; 称为第 位的权。

指向原始笔记的链接

在二进制数中, 每一列的权 (从右到左) 分别为 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,以此类推。如果你经常在二进制数下工作, 记住这些 会节省很多时间。

指向原始笔记的链接

2.3. 八进制

八进制

八进制数的每一位有 八个不同的数码,计数的基数为 8。低位和相邻的高位之间的进位关系是“逢八进一”。任意一个八进制数可以展开为,

八进制数展开式

为第 位的系数

指向原始笔记的链接
有时也用 O(Octal)来代替下脚注 8。

指向原始笔记的链接

2.4. 十六进制

十六进制

十六进制数的每一位有十六个不同的数码,分别用 、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)表示。因此,任意一个十六进制数均可展开为,

十六进制数展开式

表示第 位的系数

指向原始笔记的链接

有时也用 H(Hexadecimal)代替 16 这个脚注。

指向原始笔记的链接

3. 不同数制之间的转换

不同数制间的转换

十进制转换成二进制

把一个十进制转换为二进制的方法是:把被转换的十进制数反复地除以 2,直到商为 0 为止,所得余数(从末位读起)就是这个数的二进制表示,简单地说,就是除 2 取余法

除 2 取余法的原理

二进制转十进制

要把二进制转换为十进制数,将二进制数按数的位置多项式表示法展开求和即可。

一个数的位置和多项式表示法

一个数的位置和多项式表示法

一个数用位置表示法表示为 「.」:radix point,小数点。在小数点之前的是整数位(integer digits),在其后的是小数位(fractional digits)。 「r」:radix base,称为底数或者进制。 「 」:是最高位(most significant digit, MSD) 「 」:是最低位(least significant digit, LSD)

其位置多项式可以表示为

指向原始笔记的链接

二进制-十六进制

二进制转十六进制

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

当整数部分最高位一组不足 4 位时,用 0 补足 4 位;小数部分最低位不足 4 位时,用 0 补足 4 位。

指向原始笔记的链接

十六进制转二进制

 十六进制转二进制就是二进制转十六进制的逆过程。用 4 位二进制数替代十六进制的每一位就行。

八进制转二进制

八进制转二进制和二进制转八进制在方法上和二进制与十六进制互转相类似。通过使用 3 位二进制数就能替代一位八进制数。

十六进制与十进制的转换

十六进制转十进制的时候,将十六进制数展开相加即可。十进制转十六进制时,可先将其先转为二进制,然后转为十六进制。

指向原始笔记的链接

4. 二进制算数运算

4.1. 二进制算术运算的特点

当两个二进制数码表示两个数量大小的时候,他们之间可以进行数值运算,这种运算称为算术运算,其规则和十进制运算基本相同。

二进制算术运算的两个特点 , 即二进制数的乘法运算可以通过若干次的“被乘数 (或零) 左移 1 位”和“被乘数 (或零) 与部分积相加”这两种操作完成;而二进制数的除法运算能通过若干次的“除数右移 1 位”和“从被除数或余数中减去除数”这两种操作完成。

4.2. 反码、补码和补码运算

为了在计算机中表示数字的正负,我们设计了原码。

原码

原码

定义

原码是一种计算机中对数字的二进制定点表示法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为 0,负数该位为 1(0 有两种表示:+0 和 -0),其余位表示数值的大小。举个例子,我们用 8 位二进制表示一个数,+12 的原码为 00001100,-12 的原码就是 10001100。

指向原始笔记的链接
在使用原码做减法的时候,整个流程十分麻烦,需要先比较绝对值大小,再做差然后再赋予符号。如果使用补码相加来代替整个做差的过程,就能简化电路。

补码

补码是一种用二进制表示有符号数的方法。正数和 0 的补码就是该数字本身。负数的补码则是将其对应正数按位取反再加 1

指向原始笔记的链接
在舍弃进位的条件下 , 减去某个数可以用加上它的补码来代替。这个结论同样适用于二进制数的运算。

补码的出现是为了解决原码和反码所带了的两个问题:

  1. 正负数相加不等于 0
  2. 0 有两种表现形式

补码的表示方法如下,

二进制数的补码表示方法

对于有效数字(不包括符号位)为 位的二进制数 ,其补码 为,

指向原始笔记的链接
为了避免求补码的时候做减法运算,通常先求出 的反码 ,然后在复数的反码上加 1 得到补码。二进制数的反码定义如下,

二进制数的反码表示方法

对于有效数字(不包括符号位)为 位的二进制数 ,其反码 为,

指向原始笔记的链接

反码

反码是一种在计算机中数的机器码表示。对于单个数值(二进制的 0 和 1)而言,对其进行取反操作就是将 0 变为 1,1 变为 0。正数的反码和原码一样,负数的反码就是在原码的基础上符号位保持不变,其他位取反。

十进制原码反码
60000 01100000 0110
-31000 00111111 1100

反码使得计算机在进行运算时可以不用去管符号位,也就是让符号位参与运算。

指向原始笔记的链接

根据上面两个公式可以知道,当二进制数 为负数的时候,其补码为,

二进制负数的补码计算式

指向原始笔记的链接

5. 几种常用的编码

5.1. 十进制代码

十进制代码

十进制代码

概念

十进制代码是为了用二进制代码表示十进制数的 0-9 这十个状态而创造的一种等长编码

几种常见的十进制代码

[clip_image002]

  • 8421 码
    • 又称为 BCD (Binary Coded Decimal) 码,是十进制代码中最常用的一种。每一位的 1 代表的十进制数称为这一位的权。8421 码中每一位的权是固定不变的,它属于有权码
  • 余 3 码
    • 编码规则与 8421 码不同。如果将两个余 3 码相加,所得的和将比十进制数和所对应的二进制数多 6。0 和 9、1 和 8、2 和 7、3 和 6、4 和 5 的余 3 码互为反码,这对于求取对 10 的补码是很方便的。余 3 码不是恒权码。
  • 2421 码
    • 一种恒权码,它的 0 和 9、1 和 8、2 和 7、3 和 6、4 和 5 也互为反码。
  • 5211 码
    • 是另一种恒权码。5211 码的每一位正好与 8421 码十进制计数器 4 个触发器输出脉冲的分频比相对应。这种对应关系在构成某些数字系统时很有用。
  • 余 3 循环码
    • 是一种无权码,每一位的 1 在不同代码中并不代表固定的数值。它的主要特点是相邻的两个代码之间仅有一位的状态不同。
  • 格雷码

笔记来源

指向原始笔记的链接