专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换

回到目录

下一篇:计算机基础:二进制基础11,十六进制的位基和位权

(二)MFC 专栏导航

上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换

回到目录

下一篇:计算机基础:二进制基础11,十六进制的位基和位权

本节前言

在之前的章节中,我讲解了二进制和八进制的知识。从本节开始,我来讲解十六进制的知识。十六进制,它算是编程的时候更为常用的东西。计算机直接识别的并不是十六进制,而是二进制。然而,人在使用二进制数的时候,往往不是直接用,而是将其标记为十六进制数,然后使用。

十六进制,个人认为,它是一个很有趣的知识点,同时呢,它也很有用。我觉得,十六进制的发明,是一个很了不起的东西。

好了,我们还是开始本节的正式讲解。

本节,我们要来讲解的是,用十六进制来查数。

一.    十进制与二进制数数的回顾

(一)十进制计数回顾

在十进制里面,共有十个表示数字的符号,为 0 到 9。用十进制来查数的时候,基本的法则,是逢十进一。

比如,从1数到9之后,9的下一个数,是 10 。9是单独的某一位里面最大的数,再加一的话,就需要令此位归零,并向上进一位。

9之后是10,19之后是20,29之后是30 。而99之后呢?个位需要归零,然后向十位进一位。十位也是 9,加上个位进过来的 1 以后,也要归零,并向上进一位,也就是向百位进一位。结果呢,99变为 100 。999之后是1000,9999之后是 10000 。

逢十进一,这是十进制的基本计数方法。

(二)二进制计数回顾

在二进制里面,有两个基本的,用来表示数字的符号,它们分别是 0 和 1 。用二进制来查数的时候,基本的法则,是逢二进一。

从 0 开始查数的话,首先是 0,下一个是 1 。

1之后是啥呢?由于 1 已经是二进制数的单个符号里面的最大值,没有比它再大的了。所以呢,再往下数的话,那就得是 1 归 0,然后,向上进一位,结果呢,1 的下一个数,是【0B 10】。

【0B 10】之后呢,是【0B 11】。【0B 11】之后是啥呢? 

右边的位为1,再往下数的话,1 归为 0,然后向上进一位,也就是向左边的位进一位。左边的位也是1,加上右边进位过来的1 以后,它也要归零,并向上进一位。结果呢,【0B 11】的下一个数,是【0B 100】。

【0B 101】的下一个数是【0B 110】。

【0B 111】的下一个数是【0B 1000】。

【0B 1001】的下一个数是【0B 1010】。

【0B 1011】的下一个数是【0B1100】。

【0B 1101】的下一个数是【0B 1110】。

【0B 1111】的下一个数是【0B 10000】。

【0B 11111】的下一个数是【0B 100000】。

【0B 11 1111】的下一个数是【0B 100 0000】,对于这个数,由于数位太多,所以呢,书写的时候,我就从右边数,每4个二进制位算作一组,满一组以后,若是再往高位还有数,那就空一格,来放置高位数。

在上面,我写的是6位与7位的四位一组分隔写法。如果是16位呢?请看下面的示例。

0B 101 0100 1011

懂了没?从右边数,四个一组。满一组之后,左边还有数位,那就空一格,然后放置剩余的高位。剩余的高位,依然是4位一组,满4位以后,依然还有更高的位,那就在这从右往左数的第二个4位的左边,再空一格,然后放置剩余的高位。

我们再来看一个32位数的书写例子。

0B 1011 1001 1010 0010 1001 0000 0100 0110

我有点说不明白这个规律。但是呢,经过这样子的举例,我相信,你应该是能够看懂了。

二.    十六进制计数

在上面,我是回顾了十进制数数和二进制数数。接下来呢,我来讲解十六进制数。

十进制有 10 个表示数的基本符号,为 0 到 9 。

二进制有 2 个表示数的基本符号,为 0 和 1 。

类似地,十六进制有 16 个表示数的基本符号,其中的前十个符号与十进制相同,均为 0 到 9 。问题在于,十六进制里面,还需要表示对应于十进制的 10 到 15 这 6 个数。基本符号只可以用单独的一个符号来表示,所以,不能用像 10,14 这样的两个符号来表示十六进制的基本符号。

为了表示十六进制数,计算机前辈们,选择了用英文字母 A 到 F 来表示对应于十进制的 10 到 15 的六个十六进制数。我们来看一下十六进制的基本符号与十进制数的对应关系。

十进制数十六进制
00
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F

上面的表格所展示的,便是十六进制的基本符号与十进制的对应关系了。0 到 9,这个相信大家不用去记就能够理解了。然而,A 到 F,这六个符号所对应的十进制的数值,可能大家需要去熟悉一段时间。

对于 A 到 F,你可以去记忆它们,也可以选择不去记忆。只要你自己能够在纸上进行演算,将 A 到 F 所对应的十进制值,能够演算出来就可以了。演算过程是不难的,A 对应 10,B 对应着 11,相信你可以做到。

在上面,我去列表格的时候,或者是讲解的时候,我都是用大写的英文字母 A 到 F 。实际上呢,你也可以用小写的英文字母 a 到 f 。

大小写的英文字母 A 表示同样的值,都对应着十进制的 10 。

大小写的 B,C,D,E,F,也都是对应着同样的十进制值。

B 和 b 都对应着 11,C 和 c 都对应于 12,D 和 d 都对应着 13,E 和 e 都对应着 14,F 和 f 都对应着 15 。

十进制的基本符号有十六个,为 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 。

我们接着往下讲。

十进制计数的法则是逢十进一,二进制的计数法则是逢二进一。十六进制是什么法则呢?类推就可以了,是逢十六进一。

我们来查数。

不过,十六进制和十进制数有相同的部分,我们要如何来区分,我们所标记的数,是八进制而非十进制呢?

C 语言里面,给了我们标记十六进制数的方法。那就是,以【0x】或者【0X】开头的数,便是十六进制数。所以呢,我们来查吧。

从0开始,首先呢,是 0x0,然后是 0x1,0x2,0x3,0x4,一直到0xF 。

十六进制的计数法则,是逢十六进一。F 就对应着十进制的 15 了,再往下数,就对应着十进制的 16 了,就应该进一位了。也就是,想要求得 0xF 的下一个数,应该是 F 归 0,并向上进一位,结果为 0x10 。

0x10 再往后,依次是 0x11,0x12,0x13,0x14,一直到 0x1F 。

0x1F 的下一位是什么呢?根据逢十六进一的法则,应该最低位的 F 归零,然后向上进一位,结果为 0x20 。0x20,便是计算机里面,用于表示空格符的数。

再往下,0x21,0x22等等的计数,相信大家就能够明白了。

0xF 的下一个数是0x10,0x1F 的下一个数是0x20。

0x2F 的下一个数是啥呢?相信大家能够自己推理得到,是 0x30。

0x3F 的下一个数是 0x40 。

0x4F 的下一个是 0x50 。

0x5F 的下一个数是0x60。

0x6F 的下一个数是 0x70 。

0xFF 的下一个数是啥呢?

右边的 F 要归零,并向上进一位。然后呢,左边的数 F,加上右边进位而来的1,这导致左边的 F 依然要归零并向上进一位,结果为 0x100 。

0x11F 的下一个数是 0x120 。

0x13F 的下一个数是 0x140 。

0xFFF 的下一个数是啥呢?

右边的数 F 归零并向上进一位,中间的 F 和左边的 F 也是这样的逻辑,结果为 0x1000 。

0xFFFF 的下一个数是 0x10000 。

0xFFFFF 的下一个数是 0x100000 。

例子,我已经是举的足够多了。我相信,你应该是能够理解了。如果还不理解,就请自己找别的教材来查吧。

结束语

十六进制知识,算是一个比较有趣的部分。希望大家能够跟上啊。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换

回到目录

下一篇:计算机基础:二进制基础11,十六进制的位基和位权

(二)MFC 专栏导航

上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换

回到目录

下一篇:计算机基础:二进制基础11,十六进制的位基和位权

Logo

科技之力与好奇之心,共建有温度的智能世界

更多推荐