第 4 章
数字系统
介绍
在数据恢复编程或任何其他磁盘故障排除编程中,同时处理不同类型的数字系统以执行单个任务甚至是非常小的工作(例如计算扩展 MBR 的特定位置)是很常见的CHS(气缸、气缸盖和扇区)的位置,这些位置指导程序员完成操作。
在尝试学习基于汇编语言的系统级编程以及必须使用二进制和十六进制数字系统时,可能大多数初级程序员在将不同类型的数字系统相互转换时遇到问题或困惑。
在本章中,我们将讨论许多重要的概念,包括二进制、十进制、十六进制编号系统以及二进制数据组织,如位、半字节、字节、字和双字等的转换以及许多其他相关主题数字系统。
大多数现代计算机系统不使用十进制系统表示数值,但它们通常使用二进制或 2 的补码编号系统。
编程中常用的有四种数基, 二进制、八进制、十进制和十六进制。然而,大多数时候我们会遇到二进制、十进制和十六进制数字系统。这些数字系统已根据其基数进行了区分。
每个编号系统都有自己的基数和表示符号。我在下表中列出了这四个数字:
Name of Number System |
Base Number |
Symbol Used for Representation |
Binary |
2 |
B |
Octal |
8 |
Q or O |
Decimal |
10 |
D or None |
Hexadecimal |
16 |
H |
十进制数系统
十进制以 10 为底,包括从 0 到 9 的数字。不要混淆,这是我们日常生活中用来计算事物的常用数字系统。每个位置的功率加权值如下:
这样,如果我有一个十进制数 218 并且我想以上述方式表示它,则数字 218 将以以下方式表示:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
现在让我们举一个小数的例子。让我们有一个号码 821.128。出现在小数点左侧的每个数字代表一个介于 0 和 9 之间的值,十的幂由它在数字中的位置表示(从 0 开始)。
出现在小数点右侧的数字代表一个介于 0 和 9 倍之间的值,它是 10 的负数递增负幂的倍数。让我们看看如何:
8 * 102 + 2 * 101 + 1 * 100 + 1 * 10-1 + 2 * 10-2 + 8 * 10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0.1 + 2 * 0.01 + 8 * 0.001
= 800 + 20 + 1 + 0.1 + 0.02 + 0.008
= 821.128
二进制数制
当今大多数现代计算机系统都使用二进制逻辑进行操作。计算机使用两个电压电平表示值,使用 0 和 1 指示关闭或打开。例如,电压 0V 通常由逻辑 0 表示,+3.3 V 或 +5V 电压由逻辑 1 表示。因此,使用两个电平,我们可以准确地表示两个不同的值。它们可以是任意两个不同的值,但按照惯例,我们使用值 0 和 1。
由于计算机使用的逻辑电平与二进制编号系统中使用的两位数字之间存在对应关系,因此计算机采用二进制系统也就不足为奇了。
二进制数字系统的工作方式与十进制数字系统类似,但二进制数字系统使用以 2 为底且仅包括数字 0 和 1,并且使用任何其他数字会使该数字成为无效的二进制数字。
每个位置的加权值表示如下:
下表显示了二进制数与十进制数的表示:
Decimal Number |
Binary Number Representation |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
通常在十进制数字的情况下,每三个十进制数字用逗号分隔,以使较大的数字更易于阅读。例如,数字 840,349,823 比 840349823 更容易阅读。
从同样的想法中获得灵感,二进制数有一个类似的约定,这样可能更容易阅读二进制数,但对于二进制数,我们将从最低有效位开始每四位添加一个空格小数点左边。
例如 如果二进制值为 1010011001101011,则写为 1010 0110 0110 1011。
二进制转十进制数
要将二进制数转换为十进制数,我们将每个数字乘以其加权位置,然后将每个加权值相加。例如,二进制值 1011 0101 表示:
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20
= 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1
= 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1
= 181
十进制转二进制
要将任何十进制数转换为其二进制数系统,一般方法是将十进制数除以2,如果余数为0,则在侧面写下0。如果余数为1,则写下1。
通过将商除以 2 并删除前一个余数来继续此过程,直到商为 0。在执行除法时,将表示十进制数的二进制等值的余数从最低有效位开始写入(右),每个新数字都写入前一个数字的更高位(左)。
让我们举个例子。考虑数字 2671。下表给出了数字 2671 的二进制转换。
Division |
Quotient |
Remainder |
Binary Number |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
1010 0110 1111 |
该表是为了阐明转换的每一步,但在实践中,为了获得转换的便利性和速度,您可以按照以下方式获得结果。
令 1980 是任何十进制数,要转换成它的等值二进制数。除了按照表中给出的方法,我们将通过以下方式解决这个问题:
当我们按照箭头方向排列余数时,我们得到的二进制数等价于十进制数 1980 = 0111 1011 1100
二进制数格式
通常我们将二进制数写为位序列。 “位”是机器中“二进制数字”的缩写。这些位有定义的格式边界。这些格式边界已在下表中表示:
Name |
Size in bits |
Example |
Bit |
1 |
1 |
Nibble |
4 |
0101 |
Byte |
8 |
0000 0101 |
Word |
16 |
0000 0000 0000 0101 |
Double Word |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
我们可以根据需要添加任意数量的前导零,而无需更改其在任何数字基数中的值,但是我们通常添加前导零以将二进制数调整到所需的大小边界。
例如, 我们可以在不同的情况下表示数字 7,如下表所示:
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
Nibble |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Byte |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Word |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
其中二进制数中最右边的位为零,左边的每一位被赋予下一个连续的位号,如上表所示。
位零通常称为最低有效位或 LSB,最左边的位通常称为最高有效位或 MSB。让我们了解这些表示形式:
位
位是二进制计算机上的最小数据单位。单个位只能表示一个值,0 或 1。如果您使用一个位来表示布尔(真/假)值,那么 位表示真或假.
轻咬
当我们谈论数字系统、BCD(二进制编码的十进制)或/和十六进制(以 16 为基数)数字时,Nibble 特别涉及到我们感兴趣的领域。
半字节是 4 位边界上的位集合。它需要四位来表示单个 BCD 或十六进制数字。通过一个半字节,我们最多可以表示 16 个不同的值。
在十六进制数的情况下,值 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E 和 F 用四位表示。 BCD 使用十个不同的数字(0、1、2、3、4、5、6、7、8、9),需要四位。
事实上,任何十六个不同的值都可以用一个半字节表示,但十六进制和 BCD 数字是我们可以用一个半字节表示的主要项目。 nibble 的位级表示如下:
字节
字节是 80x86 微处理器使用的最重要的数据结构。一个字节由八位组成,是微处理器中最小的可寻址数据项。计算机中的主存和 I/O 地址都是字节地址,因此 80x86 微处理器程序可以单独访问的最小项是 8 位值。
要访问任何较小的内容,您需要读取包含数据的字节并屏蔽掉不需要的位。我们将在接下来的章节中进行编程。
字节最重要的用途是保存字符代码。字节中的位从零位 (b0) 到七位 (b7) 编号,如下所示:
第 0 位 (b0) 是字节的低位或最低有效位,第 7 位 (b7) 是字节的高位或最高有效位。
正如我们看到的,一个字节正好包含两个半字节,其中位 b0 到 b3 构成低位半字节,位 b4 到 b7 构成高阶半字节。
由于一个字节恰好包含两个半字节,因此字节值需要两个十六进制数字。
由于传统的现代计算机是字节可寻址机器,因此操作整个字节比操作单个位或半字节更有效。
这就是大多数程序员使用一个完整字节来表示需要不超过 256 项的数据类型的原因
由于一个 Byte 包含 8 位,它可以表示 28 或 256 个不同的值,因为最大的 8 位二进制数可能是 1111 1111 等于 256(十进制)因此通常一个字节用于表示以下内容:
- 0 到 255 范围内的无符号数值
- -128 到 +127 范围内的有符号数
- ASCII 字符代码
- 以及其他需要不超过 256 个不同值的特殊数据类型,因为许多数据类型的项目少于 256 个,因此 8 位通常就足够了。
这个词
一个词是一组 16 位。但传统上,字的边界被定义为 16 位或处理器的数据总线的大小,而双字是两个字。因此,字和双字不是固定大小,而是因系统而异,具体取决于处理器。但是对于概念性阅读,我们将一个单词定义为两个字节。
当我们在位级别上看到一个字时,它将被编号为从位零 (b0) 到十五 (b15) 的字中的位。位级表示如下:
其中第 0 位是 LSB(最低有效位),第 15 位是 MSB(最高有效位)。当需要引用一个字中的其他位时,使用它们的位位置号来引用它们。
这样,一个字正好包含两个字节,从位 b0 到位 b7 形成低位字节,位 b8 到 b15 形成高位字节。使用一个 16 位的字,我们可以表示 216(65536)个不同的值。这些值可能如下:
- 0 到 65,535 范围内的无符号数值。
- -32,768 到 +32,767 范围内的有符号数值
- 任何不超过 65,536 个值的数据类型。这样,单词主要用于:
- 16 位整数数据值
- 16 位内存地址
- 任何需要 16 位或更少的数字系统
双字
一个双字,顾名思义,就是两个字。因此一个双字数量是32位。双字还可以分为高位字和低位字、四个字节或八个半字节等。
这样Double word可以表示各种不同的数据。它可能是以下几种:
- 0 到 4,294,967,295 范围内的无符号双字,
- 范围为 -2,147,483,648 到 2,147,483,647 的有符号双字,
- 32 位浮点值
- 或任何其他需要 32 位或更少的数据。
八进制数
八进制数系统在旧计算机系统中很流行,但现在很少使用。然而,我们将八进制系统的理想作为知识。
八进制系统基于具有 3 位边界的二进制系统。八进制数系统使用以 8 为基数,仅包括数字 0 到 7。这样,任何其他数字都会使该数字成为无效的八进制数。
每个位置的加权值如下表所示:
(base)power |
85 |
84 |
83 |
82 |
81 |
80 |
Value |
32768 |
4096 |
512 |
64 |
8 |
1 |
二进制转八进制
要将整数二进制数转换为八进制数,我们遵循以下两个步骤:
首先将二进制数分成从 LSB 到 MSB 的 3 位部分。然后将 3 位二进制数转换为等效的八进制数。让我们举个例子来更好地理解它。如果我们给任何二进制数说 11001011010001 来转换成八进制数系统,我们将对这个数应用上述两个步骤,如下所示:
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Equivalent number |
3 |
1 |
3 |
2 |
1 |
因此八进制数,等价于二进制数 11001011010001 是 31321.
八进制转二进制
要将任何整数八进制数转换为其对应的二进制数,我们遵循以下两个步骤:
首先将十进制数转换为其等效的 3 位二进制数。然后通过删除空格来组合 3 位部分。让我们举个例子。如果我们有任何八进制数整数 31321(Q) 转换成其对应的二进制数,我们将应用上述两个步骤如下:
Equivalent number |
3 |
1 |
3 |
2 |
1 |
二进制数的 3 位部分 |
011 |
001 |
011 |
010 |
001 |
因此,八进制数 31321(Q) 的 二进制等价物是 011 0010 1101 0001.
八进制转十进制
要将任何八进制数转换为十进制,我们将每个位置的值乘以其八进制权重并添加每个值。
让我们举个例子来更好地理解这一点。让我们将任何八进制数 31321Q 转换为其对应的十进制数。然后我们将按照以下步骤进行:
3*84 + 1*83 + 3*82 + 2*81 + 1*80
= 3*4096 + 1*512 + 3*64 + 2*8 + 1*1
= 12288 + 512 + 192 + 16 + 1
= 13009
十进制转八进制
将十进制转换为八进制稍微困难一些。将十进制转换为八进制的典型方法是重复除以 8。对于这种方法,我们将十进制数除以 8,并将余数写在旁边作为最低有效位。通过将商除以 8 并写入余数来继续此过程,直到商为 0。
在执行除法时,将表示十进制数的八进制等值的余数从最低有效数字(右)开始写入,每个新数字写入前一个更高有效数字(左)数字。
让我们通过一个例子更好地理解它。如果我们有任何十进制数,比如 13009(我们从上面的示例中找到了这个十进制数,并将其转换回八进制数,我们也可以检查前面的示例。)那么这个方法已经在下表中描述:
Division |
Quotient |
Remainder |
Octal Number |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
正如你所看到的,我们回到了原来的号码。这是我们应该期待的。这张表是为了理解程序。现在让我们重复相同的转换,以了解在实践中应遵循的方法,以便于工作并节省时间。两者其实都是一样的。
当我们按照箭头的方向排列余数时,我们得到了我们期望的八进制数 31321。
十六进制数系统
十六进制数最常用于我们的数据恢复或任何其他类型的磁盘故障排除或磁盘分析编程,因为十六进制数提供以下两个功能:
十六进制数字非常紧凑。并且很容易从十六进制转换为二进制,从二进制转换为十六进制。当我们要计算很多重要的东西,比如硬盘的柱面数、磁头数和扇区数,或者我们要使用硬盘编辑器程序来分析不同的特性和问题时,我们需要对Hex系统有很好的了解。十六进制系统基于使用半字节或 4 位边界的二进制系统。
十六进制数系统使用以 16 为基数,仅包括数字 0 到 9 以及字母 A、B、C、D、E 和 F。我们使用带数字的 H 来表示任何十六进制数。下表显示了各种数字系统的表示,并相互区分:
Binary |
Octal |
Decimal |
Hex |
0000B |
00Q |
00 |
00H |
0001B |
01Q |
01 |
01H |
0010B |
02Q |
02 |
02H |
0011B |
03Q |
03 |
03H |
0100B |
04Q |
04 |
04H |
0101B |
05Q |
05 |
05H |
0110B |
06Q |
06 |
06H |
0111B |
07Q |
07 |
07H |
1000B |
10Q |
08 |
08H |
1001B |
11Q |
09 |
09H |
1010B |
12Q |
10 |
0AH |
1011B |
13Q |
11 |
0BH |
1100B |
14Q |
12 |
0CH |
1101B |
15Q |
13 |
0DH |
1110B |
16Q |
14 |
0EH |
1111B |
17Q |
15 |
0FH |
1 0000B |
20Q |
16 |
10H |
此表提供了从一个数字基数转换为另一个数字基数(从 0 到 16 的十进制值)所需的所有信息。
十六进制数的每个位置的加权值如下表所示:
(Base)power |
163 |
162 |
161 |
160 |
Value |
4096 |
256 |
16 |
1 |
二进制转十六进制
要将二进制数转换为十六进制格式,首先在最左侧用前导零填充二进制数,以确保二进制数包含四位的倍数。之后执行以下两个步骤:
首先,将二进制数分成从 LSB 到 MSB 的 4 位部分。然后将 4 位二进制数转换为其等效的十六进制数。让我们举个例子来更好地理解该方法。让我们将任意二进制数 100 1110 1101 0011 转换为其对应的十六进制数。然后我们将应用上述两个步骤,如下所示:
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Hexadecimal value |
4 |
E |
D |
3 |
因此,对应于二进制数 100 1110 1101 0011 的十六进制值是 4ED3。
十六进制转二进制
要将十六进制数转换为二进制数,我们遵循以下两个步骤:
首先,将十六进制数转换为其等效的 4 位二进制数。然后通过删除空格来组合 4 位部分。为了更好地理解这个过程,让我们以上面的十六进制数为例,即 4ED3 并在其上应用这两个步骤,如下所示
Hexadecimal value |
4 |
E |
D |
3 |
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
因此对于十六进制数 4ED3,我们得到对应的二进制数 = 0100 1110 1101 0011
这是预期的答案。
十六进制到十进制转换 为了从十六进制转换为十进制,我们将每个位置的值乘以其十六进制权重并添加每个值。让我们举个例子来更好地理解这个过程。假设我们将任何十六进制数 3ABE 转换为其等效的十进制数。然后程序如下:
3*163 + A*162 + B*161 + E*160
= 3* 4096 + 10* 256 + 11*16 + 14
= 12288 + 2560 + 176 + 14
= 15038
因此, 十六进制数 3ABE 的等效十进制数是 15038.
十进制到十六进制的转换
要将十进制转换为十六进制,典型的方法是重复除以 16。对于这种方法,我们将十进制数除以 16,并将余数写在旁边作为最低有效位。
通过将商除以 16 并写入余数来继续此过程,直到商为 0。执行除法时,将表示十进制数的十六进制等值的余数从最低有效位开始写入(右) 并且每个新数字都被写入前一个数字的下一个更重要的数字(左侧)。
让我们通过例子来学习它。我们取上面转换后得到的十进制数 15038。通过这个我们也可以检查上面的转换,反之亦然。
Division |
Quotient |
Remainder |
Hex Number |
15038 / 16 |
939 |
14 (E H) |
E |
939 / 16 |
58 |
11 (B H) |
BE |
58 / 16 |
3 |
10 (A H) |
ABE |
3 / 16 |
0 |
3 (3 H) |
03ABE |
因此我们得到十六进制数 03ABE H,相当于十进制数 15038,这样我们就回到了原始数字。这是我们应该期待的。
下面给出的表格可以帮助快速搜索十六进制数到十进制数的转换,反之亦然,从 0 到 255 个十进制数。
在这个 Square 表中,有 16 行,从 0 到 A,也有 16 列,从 0 到 A。从这个表中,您可以找到介于 0H 到 FFH 之间的任何十六进制数的十进制值。表示数字的十进制值应在 0 到 255 个十进制数之间。
- 从上表中找到十六进制数的十进制值:在上表中,行数表示第一个十六进制数(左十六进制数),列数表示第二个十六进制数(右十六进制数)十六进制数。
让我们有任何十六进制数,例如 ACH,将其转换为等效的十进制数。然后我们将看到表格中Ath行Cth列的十进制值,得到十进制值172,它是十六进制数ACH的等效十进制数。
- 从上表中找到十进制数的十六进制值:在上表中,行数代表十六进制数的第一个十六进制数字(左十六进制数字),列数代表十六进制数的第二个十六进制数字(右十六进制数字)因此,如果您有任何十进制数要转换为等效的十六进制数,请在表中搜索数字并找到等效的十六进制值,如下所示:
十进制数的十六进制值 =(行号)(列号)
例如,如果要查找十进制数 154 的等效十六进制值数字,请参阅表中数字的位置。数字 154 位于表格的第 9 行第 A 列。因此十进制数 154 的等效十六进制值为 9AH。
ASCII码
缩写 ASCII 代表美国信息交换标准代码。它是字符、数字和符号的编码标准,与 ASCII 字符集的前 128 个字符相同,但与其余字符不同。这些其他字符通常称为 IBM 定义的扩展字符的特殊 ASCII 字符。
前 32 个字符是 0 到 1FH 的 ASCII 码,构成一组特殊的非打印字符。这些字符被称为控制字符,因为这些字符执行各种打印机和显示控制操作,而不是显示符号。这些字符已在本章给出的 ASCII 字符表中列出。这些控制字符具有以下含义:
NUL(空):
没有字符。用于填充时间或填充存储设备表面(如盘片表面)上没有数据的空间。当我们为数据擦除器(破坏性和非破坏性两者)进行编程时,我们将使用此字符来擦除未分配的空间,以便任何人或任何程序都无法恢复已删除的数据。
SOH(标题开始):
此字符用于指示标题的开始,可能包含地址或路由信息。
TX(文本开头):
这个字符用来表示文本的开始,这样也用来表示标题的结束。
ETX(文本结尾):
此字符用于终止以 STX 开头的文本。
EOT(传输结束):
此字符表示传输结束,其中可能包含一个或多个带有标题的“测试”。
ENQ(查询):
这是对远程站响应的请求。这是一个站识别自己的请求。
ACK(确认):
它是一个字符,由接收设备发送,作为对打磨机的肯定响应。它用作对轮询消息的积极响应。
BEL(贝尔):
当需要引起人们的注意时使用它。它可以控制警报或注意设备。当您在命令提示符中键入此字符时,您会听到连接到计算机的扬声器发出铃声,如下所示:
C:\> 回声 ^G
这里的^G是Ctrl+G组合键打印出来的。
BS(退格):
此字符表示打印机构或显示光标向后移动一个位置。
HT(水平标签):
表示打印机构或显示光标向前移动到下一个预先指定的“制表符”或停止位置。
LF(换行):
表示打印机构或显示光标移动到下一行的开头。
VT(垂直标签):
它表示打印机构或显示光标移动到一系列预先指定的打印行中的下一个。
FF(换页):
表示打印机构或显示光标移动到下一页、从或屏幕的起始位置。
CR(回车):
表示打印机构或显示光标移动到同一行的起始位置。
SO(移出):
它表示后面的代码组合应被解释为标准字符集之外,直到到达 Shift In 字符。
我(移入):
表示后面的代码组合按照标准字符集进行解释。
DLE(数据链路逃逸):
它是一个字符,它将改变一个或多个连续跟随字符的含义。它可以提供补充控制,或允许发送具有任意位组合的数据字符。
DC1、DC2、DC3 和 DC4(设备控制):
这些是用于控制辅助设备或特殊终端功能的字符。
NAK(否定确认):
它是接收设备作为对发送者的否定响应而发送的字符。它用作对轮询消息的否定响应。
SYN(同步/空闲):
用于同步传输系统在没有数据发送时实现同步,同步传输系统可以连续发送SYN字符。
ETB(传输块结束):
该字符表示用于通信目的的数据块的结束。它用于分块数据,其中块结构不一定与处理格式相关。
CAN(取消):它表示通常应该忽略消息或块中它之前的数据,因为检测到错误。
EM(媒体结束):它表示磁带、表面(通常是磁盘的盘片)或其他媒体的物理结束,或媒体使用部分所需的结束。
SUB (Substitute): 替换被发现错误或无效的字符。
ESC(转义):这是一个旨在提供代码扩展的字符,因为它为指定数量的连续字符提供了替代含义。
FS(文件分隔符):此字符用作文件分隔符。
GS(组分隔符):用作组分隔符。
RS(记录分隔符):用作记录分隔符。
美国(美联航):
它是一个统一的分隔符。
第二组 32 个 ASCII 字符代码有各种标点符号、特殊字符和数字。该组中最显着的人物包括:
空格字符(ASCII 码 20H)
数字 0 到 9(ASCII 代码 30h 到 39h)
数学和逻辑符号
SP(空格):
它是一个非打印字符,用于分隔单词或移动打印机构或将光标向前显示一个位置。
第三组 32 个 ASCII 字符是大写字母字符组。字符 A 到 Z 的 ASCII 代码位于 41H 到 5AH 范围内。由于只有 26 个不同的字母字符,剩下的 6 个代码包含各种特殊符号。
第四组 32 个 ASCII 字符代码是一组小写字母符号、五个附加特殊符号和另一个控制字符删除。
DEL(删除):
它用于删除不需要的字符,而不是我们可以说删除不需要的字符。
接下来显示了两个表格,分别代表 ASCII 码和扩展字符。第一个表代表了所描述的所有四组不同类型的字符。该表是数据表示和ASCII表,如下所示:
数据表示&ASCII码表:
HEX |
DEC |
CHR |
CTRL |
00 |
0 |
NUL |
^@ |
01 |
1 |
SOH |
^A |
02 |
2 |
STX |
^B |
03 |
3 |
ETX |
^C |
04 |
4 |
EOT |
^D |
05 |
5 |
ENQ |
^E |
06 |
6 |
ACK |
^F |
07 |
7 |
BEL |
^G |
08 |
8 |
BS |
^H |
09 |
9 |
HT |
^I |
0A |
10 |
LF |
^J |
0B |
11 |
VT |
^K |
0C |
12 |
FF |
^L |
0D |
13 |
CR |
^M |
0E |
14 |
SO |
^N |
0F |
15 |
SI |
^O |
10 |
16 |
DLE |
^P |
11 |
17 |
DC1 |
^Q |
12 |
18 |
DC2 |
^R |
13 |
19 |
DC3 |
^S |
14 |
20 |
DC4 |
^T |
15 |
21 |
NAK |
^U |
16 |
22 |
SYN |
^V |
17 |
23 |
ETB |
^W |
18 |
24 |
CAN |
^X |
19 |
25 |
EM |
^Y |
1A |
26 |
SUB |
^Z |
1B |
27 |
ESC |
1C |
28 |
FS |
1D |
29 |
GS |
1E |
30 |
RS |
1F |
31 |
US |
HEX |
DEC |
CHR |
20 |
32 |
SP |
21 |
33 |
! |
22 |
34 |
" |
23 |
35 |
# |
24 |
36 |
$ |
25 |
37 |
% |
26 |
38 |
& |
27 |
39 |
' |
28 |
40 |
( |
29 |
41 |
) |
2A |
42 |
* |
2B |
43 |
+ |
2C |
44 |
, |
2D |
45 |
- |
2E |
46 |
. |
2F |
47 |
/ |
30 |
48 |
0 |
31 |
49 |
1 |
32 |
50 |
2 |
33 |
51 |
3 |
34 |
52 |
4 |
35 |
53 |
5 |
36 |
54 |
6 |
37 |
55 |
7 |
38 |
56 |
8 |
39 |
57 |
9 |
3A |
58 |
: |
3B |
59 |
; |
3C |
60 |
< |
3D |
61 |
= |
3E |
62 |
> |
3F |
63 |
? |
HEX |
DEC |
CHR |
40 |
64 |
@ |
41 |
65 |
A |
42 |
66 |
B |
43 |
67 |
C |
44 |
68 |
D |
45 |
69 |
E |
46 |
70 |
F |
47 |
71 |
G |
48 |
72 |
H |
49 |
73 |
I |
4A |
74 |
J |
4B |
75 |
K |
4C |
76 |
L |
4D |
77 |
M |
4E |
78 |
N |
4F |
79 |
O |
50 |
80 |
P |
51 |
81 |
Q |
52 |
82 |
R |
53 |
83 |
S |
54 |
84 |
T |
55 |
85 |
U |
56 |
86 |
V |
57 |
87 |
W |
58 |
88 |
X |
59 |
89 |
Y |
5A |
90 |
Z |
5B |
91 |
[ |
5C |
92 |
\ |
5D |
93 |
] |
5E |
94 |
^ |
5F |
95 |
_ |
HEX |
DEC |
CHR |
60 |
96 |
` |
61 |
97 |
a |
62 |
98 |
b |
63 |
99 |
c |
64 |
100 |
d |
65 |
101 |
e |
66 |
102 |
f |
67 |
103 |
g |
68 |
104 |
h |
69 |
105 |
i |
6A |
106 |
j |
6B |
107 |
k |
6C |
108 |
l |
6D |
109 |
m |
6E |
110 |
n |
6F |
111 |
o |
70 |
112 |
p |
71 |
113 |
q |
72 |
114 |
r |
73 |
115 |
s |
74 |
116 |
t |
75 |
117 |
u |
76 |
118 |
v |
77 |
119 |
w |
78 |
120 |
x |
79 |
121 |
y |
7A |
122 |
z |
7B |
123 |
{[} |
7C |
124 |
| |
7D |
125 |
} |
7E |
126 |
~ |
7F |
127 |
DEL |
下表显示了 128 个特殊 ASCII 字符集,通常称为扩展 ASCII 字符:
HEX |
DEC |
CHR |
80 |
128 |
Ç |
81 |
129 |
ü |
82 |
130 |
é |
83 |
131 |
â |
84 |
132 |
ä |
85 |
133 |
à |
86 |
134 |
å |
87 |
135 |
ç |
88 |
136 |
ê |
89 |
137 |
ë |
8A |
138 |
è |
8B |
139 |
ï |
8C |
140 |
î |
8D |
141 |
ì |
8E |
142 |
Ä |
8F |
143 |
Å |
90 |
144 |
É |
91 |
145 |
æ |
92 |
146 |
Æ |
93 |
147 |
ô |
94 |
148 |
ö |
95 |
149 |
ò |
96 |
150 |
û |
97 |
151 |
ù |
98 |
152 |
ÿ |
99 |
153 |
Ö |
9A |
154 |
Ü |
9B |
155 |
¢ |
9C |
156 |
£ |
9D |
157 |
¥ |
9E |
158 |
₧ |
9F |
159 |
ƒ |
A0 |
160 |
á |
A1 |
161 |
í |
A2 |
162 |
ó |
A3 |
163 |
ú |
A4 |
164 |
ñ |
HEX |
DEC |
CHR |
A5 |
165 |
Ñ |
A6 |
166 |
ª |
A7 |
167 |
º |
A8 |
168 |
¿ |
A9 |
169 |
⌐ |
AA |
170 |
¬ |
AB |
171 |
½ |
AC |
172 |
¼ |
AD |
173 |
¡ |
AE |
174 |
« |
AF |
175 |
» |
B0 |
176 |
░ |
B1 |
177 |
▒ |
B2 |
178 |
▓ |
B3 |
179 |
│ |
B4 |
180 |
┤ |
B5 |
181 |
╡ |
B6 |
182 |
╢ |
B7 |
183 |
╖ |
B8 |
184 |
╕ |
B9 |
185 |
╣ |
BA |
186 |
║ |
BB |
187 |
╗ |
BC |
188 |
╝ |
BD |
189 |
╜ |
BE |
190 |
╛ |
BF |
191 |
┐ |
C0 |
192 |
└ |
C1 |
193 |
┴ |
C2 |
194 |
┬ |
C3 |
195 |
├ |
C4 |
196 |
─ |
C5 |
197 |
┼ |
C6 |
198 |
╞ |
C7 |
199 |
╟ |
C8 |
200 |
╚ |
C9 |
201 |
╔ |
HEX |
DEC |
CHR |
CA |
202 |
╩ |
CB |
203 |
╦ |
CC |
204 |
╠ |
CD |
205 |
═ |
CE |
206 |
╬ |
CF |
207 |
╧ |
D0 |
208 |
╨ |
D1 |
209 |
╤ |
D2 |
210 |
╥ |
D3 |
211 |
╙ |
D4 |
212 |
╘ |
D5 |
213 |
╒ |
D6 |
214 |
╓ |
D7 |
215 |
╫ |
D8 |
216 |
╪ |
D9 |
217 |
┘ |
DA |
218 |
┌ |
DB |
219 |
█ |
DC |
220 |
▄ |
DD |
221 |
▌ |
DE |
222 |
▐ |
DF |
223 |
▀ |
E0 |
224 |
α |
E1 |
225 |
ß |
E2 |
226 |
Γ |
E3 |
227 |
π |
E4 |
228 |
Σ |
E5 |
229 |
σ |
E6 |
230 |
µ |
E7 |
231 |
τ |
E8 |
232 |
Φ |
E9 |
233 |
Θ |
EA |
234 |
Ω |
EB |
235 |
δ |
EC |
236 |
∞ |
ED |
237 |
φ |
EE |
238 |
Ε |
HEX |
DEC |
CHR |
EF |
239 |
∩ |
F0 |
240 |
≡ |
F1 |
241 |
± |
F2 |
242 |
≥ |
F3 |
243 |
≤ |
F4 |
244 |
⌠ |
F5 |
245 |
⌡ |
F6 |
246 |
÷ |
F7 |
247 |
≈ |
F8 |
248 |
° |
F9 |
249 |
∙ |
FA |
250 |
· |
FB |
251 |
√ |
FC |
252 |
ⁿ |
FD |
253 |
² |
FE |
254 |
■ |
FF |
255 |
|
一些重要的数字系统术语,通常用于数据和数据存储表示
下表列出了用作分数前缀和放大前缀的各种前缀:
字节:
字节最重要的用途是保存字符代码。我们之前已经讨论过了。
千字节
从技术上讲,一千字节是 1024 字节,但它经常被松散地用作 1000 字节的同义词。在十进制系统中,kilo 代表 1000,但在二进制系统中,kilo 代表 1024 (210)。
千字节通常用 K 或 Kb 表示。为了区分十进制 K (1000) 和二进制 K (1024),IEEE(电气和电子工程师协会)标准建议遵循使用小 k 表示十进制公斤和大写 K 表示二进制公斤的约定但这一约定绝不是严格遵守的。
兆字节
兆字节 用于描述 1048576 (220) 字节的数据存储,但当用于描述以 MBps 为单位的数据传输速率时,它指的是一百万字节。兆字节通常缩写为 M 或 MB。
技嘉
技嘉 用于描述 1,073,741,824 (230) 字节的存储,1 GB 等于 1,024 MB。技嘉通常缩写为 G 或 GB。
太字节
太字节是 1,099,511,627,776 (240) 字节,大约是 1 万亿字节。太字节有时被描述为 1012 (1,000,000,000,000) 字节,正好是一万亿。
PB
PB 被描述为 1,125,899,906,842,624 (250) 字节。 1 PB 等于 1,024 TB。
艾字节
艾字节被描述为 1,152,921,504,606,846,976 (260) 字节。一个 Exabyte 等于 1,024 Petabyte。
泽字节
泽字节 被描述为 1,180,591,620,717,411,303,424 (270) 个字节,大约是 1021 (1,000,000,000,000,000,000,000) 个字节。 泽字节 等于 1,024 Exabytes。
优达字节
优大字节 被描述为 1,208,925,819,614,629,174,706,176 (280) 个字节,大约是 1024 (1,000,000,000,000,000,000,000,000) 个字节。一个 优大字节 等于 1,024 泽字节.
常用数据存储术语
有各种名称用来指代前面给出的术语,指的是各种数据位分组。一些最常用的,已在下表中列出:
Term |
Number of Bits |
Bit / Digit / Flag |
1 |
Nibble / Nybble |
4 |
Byte / Character |
8 |
Word |
16 |
Double Word / Long Word |
32 |
Very Long Word |
64 |
Page Modified on: 06/01/2022