博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种进制转换的原理
阅读量:4225 次
发布时间:2019-05-26

本文共 1132 字,大约阅读时间需要 3 分钟。

我们通常习惯的"十进制":逢十进一。例如:

还有

但是,在电脑中,"十进制"是不吃香的。换句话说,由于为了使电脑的物理构造更加简单可靠,电脑被设计成"只了解二进制"的工作模式。

二进制

所谓"二进制",简而言之:逢二进一。

例如,上例的算式,在电脑中就被表示为如下形式:

考虑到一个字节是8个二进制位,所以我们在"最高位"也就是"第7位"上补0,形成如下最终答案:

同理,56的转换如下:

56的二进制表示如下:

再看加法的过程,注意:逢二进一!

那么,二进制的10110011表示为十进制,应该是多少呢?计算过程如下:

上述这个式子被称为"按权展开式";按权展开式所得到的结果,一定是10进制的值。自己算算看,答案是多少?

根据按权展开式,我们总是可以得到"任何进制数所对应的十进制值"。

八进制和十六进制

无论是八进制或是十六进制,都不是电脑所能"理解"的。那为什么需要这两种进制呢?原因是,八进制和十六进制能够有效地提高二进制计算的效率。 换句话说,八进制或十六进制能够很方便地和二进制进行相互转换。

先来说说八进制:

八进制"逢8进一"。注意到:3个二进制位正好能表达1个八进制位的信息。1个八进制位有共8种状态,对应的3个二进制位是 所以,八进制和二进制的转换方式是十分简单的:3个二进制位转换成对应的1个八进制位。

举例来说,二进制到八进制的转换如下图所示:

其中,每3位二进制数转换为1位八进制数。注意到上图二进制数中,最左侧的0是我们手动补上去的,为的是凑足3个数进行转换。同理,我们有下图:

把上述转换得到的2个八进制数相加;

按权展开,验算一下:

这与十进制数计算的答案是相符的。说明我们的八进制运算是正确的。

最后,我们也可以把八进制转为二进制,得到二进制的答案:

(和先前的二进制形式的计算结果是相符的)

由上运算过程可见,八进制的表示法,比二进制的表示法来得方便。(尽管电脑不认识八进制,但是可以提高我们手工计算的速度。)

再来看看十六进制:

这和八进制的形式很相似。只不过:

十六进制"逢16进一"。1个十六进制位对应的数值表示是:0~9,A,B,C,D,E,F;其中,A,B,C,D,E,F分别对应十进制的10,11,12,13,14,15。我们注意到:4个二进制位正好能表达1个十六进制位的信息。1个十六进制位有共16种状态,对应的4个二进制位是 所以,十六进制和二进制的转换方式是十分简单的:4个二进制位转换成对应的1个十六进制位。

以上题为例,我们再用十六进制做个转换计算的例子:

另一个数:

二者相加:

按权展开,得到:

同样地,我们也可以很方便地把上述十六进制的值再转为二进制的表达形式:(1位十六进制扩展为4位二进制)



转载地址:http://ylzqi.baihongyu.com/

你可能感兴趣的文章
Spring定时器的时间表达式
查看>>
主键和唯一索引的区别
查看>>
linux下使用yum安装gcc详解
查看>>
aclocal安装依赖的库
查看>>
ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)解决方案
查看>>
Host 'XXX' is not allowed to connect to this MySQL server解决方案
查看>>
corosync pacemaker 配置高可用集群(一)
查看>>
nginx(一) nginx详解
查看>>
nginx(二) nginx编译安装 及 配置WEB服务
查看>>
nginx(三) nginx配置:反向代理 负载均衡 后端健康检查 缓存
查看>>
jQuery核心--多库共存
查看>>
6 51点亮第一个LED
查看>>
Multisim 14.0 搭建并仿真51单片机最小系统
查看>>
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查找google谷歌北京IP地址的方法
查看>>
java 核心技术Ⅱ--章六:时间与日期API
查看>>
链表,循环链表,双向链表,判环和入环点
查看>>
浅谈HashMap,HashTable,ConcurrentHashMap,WeakHashMap,HashMap源码分析
查看>>
云创大数据校企合作项目斩获“全国校企合作十佳案例”
查看>>