

一文带你读懂计算机进制
source link: http://www.androidchina.net/11679.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

hi,大家好,我是开发者FTD。在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制、八进制以及十六进制。那么大家对进制的认识和使用是否很清楚呢?今天我就带大家一起深入了解一下计算机中的进制。
进制简介
「 进位制 」 其实是一种记数的方式,所以也称为 「 进位记数法/位值计数法 」 ,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(英文:radix)或底数,基数为n,即可称n进位制,简称n进制。例如平常生活中我们经常用到的十进制,就是使用10个阿拉伯数字0-9进行记数,所以它的基数就是10,称为十进制。
在计算机的世界里,计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别。
对于任何一个数,我们可以用不同的进位制来表示,他们是等价的,只是表示形式不同而已。
例如:对于十进制数 2021,分别用不同机制表示如下:
-
十进制表示为:
-
二进制表示为::
-
八进制表示为:
-
十六进制表示为:
右下标数字代表了是几进制,虽然表示形式不同,不过它们所代表的数值都是一样的,均为2021。
常用的进制
大家都知道,计算机是由二进制组成的,除了我们最常用的十进制外,计算机中常用的进制有二进制、八进制和十六进制。下面我们就分别介绍一下。
十进制
十进制是大家最容易理解的进制,由于有一些天然的因素,比如我们的双手总共有十根手指,所以在人类自发采用的进位制中,就很自然的使用了十进制作为主流的计数方法,而且大部分人从小接受的教育都是掌握十进制的计数方法,所以十进制几乎已经深深的烙印在我们的脑海中了。
十进制有10个基本数字,分别为 0、1、2、3、4、5、6、7、8、9,十进制的基数为10,运算规则为”逢十进一”;
十进制的表示方法有两种,使用下标或者后缀D,例如:
或者在数字后面加上后缀D,如: 2021D
当然由于十进制在日常生活中非常普遍,通常我们可以直接使用数字来表示,默认就是十进制数。
二进制
二进制由于表示简单,运算简单等特点,是计算机技术中广泛采用的一种数制,二进制由两个基本数字组成,分别为0、1,运算规则为”逢二进一”。
为了区别于其他进制,二进制的表示方法也有两种,使用下标或后缀 「 B 」 ,例如:
或者在数字后面加上后缀 「 B 」 ,如: 「 11111100101B 」
「二进制的特点有」:
-
二进制数中只有两个数码0和1,可用具有两个不同稳定状态的元器件来表示一位数码。
-
二进制数运算简单,大大简化了计算中运算部件的结构。
-
二进制天然兼容逻辑运算。
八进制
八进制有8个基本数字,分别为0、1、2、3、4、5、6、7,运算规则为”逢八进一”。
由于二进制数据的基数R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基数n=8=2^3,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。
八进制也有两种表示方法,使用下标或后缀O,例如:
或者在数字后面加上后缀 「 O 」 ,如: 「 3745O 」
另外一个八进制数,可以用3个二进制数来表示。例如:
十六进制
十六进制的引入同样是因为二进制数在实际使用中因为位数太长,不容易记忆才提出了十六进制数。
十六进制有16个基本数字,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则为”逢十六进一”。
十六进制有两种表示方法,使用下标或后缀 「 H 」 ,例如:
或者在数字后面加上后缀 「 H 」 ,例如: 「 7e5H 」
一个十六进制数,可以用4位二进制数来表示。例如:
补充小知识-进制的中英文表示:
-
Binary – 二进制
-
Octal – 八进制
-
Hexadecimal – 十六进制
-
Decimal – 十进制
看完之后是不是知道后缀的字母是什么含义了吧
下面这个表格有助于我们理解各个进制之间的关系:
10进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2进制 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 8进制 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 16进制 0 1 2 3 4 5 6 7 8 9 A B C D E F 10进制转换
我们在上面了解了常用的进制,后面在实际工作中我们可能会在不同的场景下用到不同的进制表示,这就涉及到进制的转换了,那么我们介绍一下常用的进制是如何进行转换的。
1、二进制与十进制之间的转换
「 十进制转二进制 」
计算方法:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。最后读数时,从最后一位读起。
例如:
❝
十进制数: 「 2021 」 转二进制后,二进制数为: 「 11111100101B 」
❞
计算过程如下:
第N次 十进制数 2021 商 余数 第1次 2021 / 2 1010 1 第2次 1010 / 2 505 0 第3次 505 / 2 252 1 第4次 252 / 2 126 0 第5次 126 / 2 63 0 第6次 63 / 2 31 1 第7次 31 / 2 15 1 第8次 15 / 2 7 1 第9次 7 / 2 3 1 第10次 3 / 2 1 1 第11次 1 / 2 0 1计算完成后,从最后一位读起,最后结果为: 「 11111100101B 」
「 二进制转十进制 」
计算方法为:把二进制数按权展开,相加既得十进制数。
例如:
❝
二进制数: 「 11111100101B 」 转十进制后,十进制数为: 「 2021 」
❞
计算过程如下:
二进制 1 1 1 1 1 1 0 0 1 0 1 位数 10 9 8 7 6 5 4 3 2 1 0 公式 2^10 2^9 2^8 2^7 2^6 2^5 0 * 2^4 0 * 2^3 2^2 0 * 2^1 2^0 结果 1024 512 256 128 64 32 0 0 4 0 1最后将每一位计算结果相加,即
最后计算结果为: 「 2021 」
2、二进制与十六进制之间的转换
「 十六进制转二进制 」
计算方法:十六进制数通过除2取余法,得到二进制数,对每个十六进制数为4个二进制数,不足时在最左边补领。
例如:
❝
十六进制数: 「 7e5H 」 转二进制后,二进制数为: 「 011111100101B 」
❞
计算过程如下:
首先,将十六进制7e5数分成三部分7、e、5,分别做除2取余:
第N次 十进制数 7 商 余数 第1次 7 / 2 3 1 第2次 3 / 2 1 1 第3次 1 / 2 0 17 转换为二进制数得 「 0111 」 ,不足四位,前面补零。
第N次 十进制数 14 (e 的十进制数) 商 余数 第1次 14 / 2 7 0 第2次 7 / 2 3 1 第3次 3 / 2 1 1 第4次 1 / 2 0 1e 转换为二进制为: 「 1110 」
第N次 十进制数 5 商 余数 第1次 5 / 2 2 1 第2次 2 / 2 1 0 第3次 1 / 2 0 15 转换为二进制为:0101,不足四位,前面补零。
最后计算结果为: 「 011111100101B 」
「 二进制转十六进制 」
计算方法:4位二进制数按权展开相加得到1位十六进制数。注意,4位二进制数转成十六进制数是从右到左开始转换,不足时补0。
例如:
❝
二进制数: 「 011111100101B 」 转十六进制后,十六进制数为: 「 7e5H 」
❞
计算过程如下:
首先将二进制数按每4位进行分隔,得到 0111,1110,0101,然后分别计算十六进制数
二进制 0 1 1 1 位数 3 2 1 0 公式 0 * 2^3 2^2 2^1 2^0 结果 0 4 2 10111 转换为十六进制为 7
二进制 1 1 1 0 位数 3 2 1 0 公式 2^3 2^2 2^1 0 * 2^0 结果 8 4 2 00111 转换为十六进制为 e
二进制 0 1 0 1 位数 3 2 1 0 公式 0 * 2^3 2^2 0 * 2^1 2^0 结果 0 4 0 10101 转换为十六进制为 5
最后计算结果为: 「 7e5H 」
3、十进制与十六进制之间的转换
「 十六进制转十进制 」
计算方法为:把十六进制数按权展开,相加既得十进制数。
例如:
❝
十六进制数: 「 7e5H 」 转十进制后,十进制数为: 「 2021 」
❞
计算过程如下:
十六进制数 7 e 5 位数 2 1 0 公式 7 * 16^2 14 * 16^1 5 * 16^0 结果 1792 224 5最后计算结果为: 「 2021 」
「 十进制转十六进制 」
计算方法:十进制数除8取余法,即十进制数除8,余数为权位上的数,得到的商值继续除8,依此步骤继续向下运算直到商为0为止。最后读数时,从最后一位读起。
例如:
❝
十进制数: 「 2021 」 转十六进制后,十六进制数为: 「 7e5H 」
❞
计算过程如下:
第N次 十进制数 2021 商 余数 第1次 2021 / 16 126 5 第2次 126 / 16 7 14 第3次 7 / 16 0 7计算完成后,从最后一位读起,最后结果为: 「 7e5H 」
总结
通过上面的介绍和例子,相信大家已经对进制有了深刻的认识和理解,一旦你搞懂他们之间的关系,将对我们在工作中遇到的很多疑问就会迎刃而解,也让我们在处理问题上变的更游刃有余。希望上面的讲解能对大家有所帮助,如果有任何这些方面的疑问,欢迎留言骚扰。
技术人,技术魂,每天肝一篇技术文,ヾ(◍°∇°◍)ノ゙哈哈~
关于作者
-
segmentfault: https://segmentfault.com/u/for_the_developers
联系作者
-
微信号: 「 ForTheDeveloper 」

-
公众号: 「 ForTheDevelopers 」

Recommend
-
137
一文带你读懂深度学习:AI 认识世界的方式如同小孩
-
31
本文为 AI 研习社编译的技术博客,原标题 : An Amazing Insight of How Image Processing Works 作者 | Bhanu Parash...
-
38
dotnet cli 是 .Net Core 功能中最有用的特性之一。在这篇文章里, 我们将介绍几个.Net OSS 工具是如何使用 dotnet cli,并介绍如何在日常开发中使用新的 cli 工具。 正文...
-
31
-
26
-
38
本文为 AI 研习社编译的技术博客,原标题 : Natural Language Processing — Event Extraction 作者 | Rodrigo Nader
-
24
经手过诸多项目,行业各异,类型各异,但却有个共同点:均涉及到账号体系,看似不难,但深究起来,却也值得思考,细细品味。于是乎,便有了这篇文章。这次将从里到外仔细剖析,从概念类别到设计方法,来讲讲关于账号体系的那些事。...
-
12
一个比较牛逼的博客,介绍了 如何优化字符串到字节数组的过程 ,避免了数据复制过程对程序性能的影响。 对此,我深感佩服。因为代码非常简单,简单到我根本看不懂...
-
11
一文带你读懂Nexus Mutual重塑保险的逻辑加密笔记2020-12-23热度: 7743不过和传统的中心化严监管的保险业不同,基于智能合约的DeFi保险有着...
-
3
一文带你读懂零知识证明 必查客 1 小时前 1.7万 原标题:科普 | 最强白话讲懂零知识证明零知识证明 zero-knowledge proofs,简称ZKPs,我们都...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK