
计算机基础:二进制基础10,用十六进制来查数
计算机基础:二进制
专栏导航
本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。
(一)WIn32 专栏导航
上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换
(二)MFC 专栏导航
上一篇:计算机基础:二进制基础09,八进制数与二进制数的转换
本节前言
在之前的章节中,我讲解了二进制和八进制的知识。从本节开始,我来讲解十六进制的知识。十六进制,它算是编程的时候更为常用的东西。计算机直接识别的并不是十六进制,而是二进制。然而,人在使用二进制数的时候,往往不是直接用,而是将其标记为十六进制数,然后使用。
十六进制,个人认为,它是一个很有趣的知识点,同时呢,它也很有用。我觉得,十六进制的发明,是一个很了不起的东西。
好了,我们还是开始本节的正式讲解。
本节,我们要来讲解的是,用十六进制来查数。
一. 十进制与二进制数数的回顾
(一)十进制计数回顾
在十进制里面,共有十个表示数字的符号,为 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 的六个十六进制数。我们来看一下十六进制的基本符号与十进制数的对应关系。
十进制数 | 十六进制 |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
上面的表格所展示的,便是十六进制的基本符号与十进制的对应关系了。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,八进制数与二进制数的转换
(二)MFC 专栏导航
更多推荐
所有评论(0)