这算是数据的表示运算这一部分的第一篇文章了,这部分多且繁杂,因为我们通常都是以10进制的数进行计算和表示的,用了10几年,突然接受一种新的表示方式难免会导致理解困难。
这篇是基础篇,是学习后面的各种运算的基础,所以得好好看,好好理解。
从10进制->2进制->16进制
我们的日常习惯,是用10进制表示的,如果满10了就向前进一位。比如 9 + 2 = 11. 9 + 2 = 10 + 1,所以向前进一位,剩下的位数填在后面。
那么好端端的为什么我们在机器中不用10进制表示而非要改变常规的思路使用二进制呢?因为这是由计算机的硬件决定的(可以多去百度)。在接下来的学习中,10进制到2进制的转换就是家常便饭了。具体的转换规则暂不多说。
类似的,计算机也常有16进制来表示一些数,如果说二进制是为了让计算机更容易理解我们的10进制表达方式,那么16进制就是为了让我们更容易读懂计算机的表达方式,而且利用16进制数可以快速的在2进制和16进制之间相互转化。(因为4位2进制数恰好可以表示16个数字(即0-15))。16进制数最常用的是在表示物理内存空间的时候,比如我们看到的0xAFFFH等等就是典型的16进制数。
BCD编码
为了方便的表示各二进制与其他进制的转换关系,于是有了BCD编码,编码的种类很多,我们就讲最简单,最常用的8421编码。特点是用4位二进制数表示一位16进制的数。
下面的表列出了8421编码的对应项(完全可以自己手动算,要记住下面的这个内容):
为什么强调这张表的重要性呢?我们看看怎么转换吧:
比如,给出一个16进制的数036A,我们化为二进制数就可以这样化:
- 从末尾开始,将每个16进制的位数都按照形式相应的写出二进制数。
- 拼接即可。
所以,直接写出二进制数为:
0000,0011,0110,1010(是不是特别方便?这里的逗号是为了方便观察而加的,实际不存在)。
修改记录:
- 2022-09-01 17:01:10
修改格式,修订部分内容 - 2019-10-18 11:42:13
发布文章