一文带你读懂计算机进制

hi,大家好,我是开发者FTD。在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制、八进制以及十六进制。那么大家对进制的认识和使用是否很清楚呢?今天我就带大家一起深入了解一下计算机中的进制。

进制简介

进位制其实是一种记数的方式,所以也称为进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(英文:radix)或底数,基数为n,即可称n进位制,简称n进制。例如平常生活中我们经常用到的十进制,就是使用10个阿拉伯数字0-9进行记数,所以它的基数就是10,称为十进制。

在计算机的世界里,计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别。

对于任何一个数,我们可以用不同的进位制来表示,他们是等价的,只是表示形式不同而已。

例如:对于十进制数 2021,分别用不同机制表示如下:

  • 十进制表示为:

2021102021_{10} 202110

  • 二进制表示为::

11111100101211111100101_{2} 111111001012

  • 八进制表示为:

374583745_{8} 37458

  • 十六进制表示为:

7e5167e5_{16} 7e516

右下标数字代表了是几进制,虽然表示形式不同,不过它们所代表的数值都是一样的,均为2021。

常用的进制

大家都知道,计算机是由二进制组成的,除了我们最常用的十进制外,计算机中常用的进制有二进制、八进制和十六进制。下面我们就分别介绍一下。

十进制

十进制是大家最容易理解的进制,由于有一些天然的因素,比如我们的双手总共有十根手指,所以在人类自发采用的进位制中,就很自然的使用了十进制作为主流的计数方法,而且大部分人从小接受的教育都是掌握十进制的计数方法,所以十进制几乎已经深深的烙印在我们的脑海中了。

十进制有10个基本数字,分别为 0、1、2、3、4、5、6、7、8、9,十进制的基数为10,运算规则为”逢十进一”;

十进制的表示方法有两种,使用下标或者后缀D,例如:
2021102021_{10} 202110
或者在数字后面加上后缀D,如: 2021D

当然由于十进制在日常生活中非常普遍,通常我们可以直接使用数字来表示,默认就是十进制数。

二进制

二进制由于表示简单,运算简单等特点,是计算机技术中广泛采用的一种数制,二进制由两个基本数字组成,分别为0、1,运算规则为”逢二进一”。

为了区别于其他进制,二进制的表示方法也有两种,使用下标或后缀B,例如:
11111100101211111100101_{2} 111111001012
或者在数字后面加上后缀B,如:11111100101B

二进制的特点有

  1. 二进制数中只有两个数码0和1,可用具有两个不同稳定状态的元器件来表示一位数码。

  2. 二进制数运算简单,大大简化了计算中运算部件的结构。

  3. 二进制天然兼容逻辑运算。

八进制

八进制有8个基本数字,分别为0、1、2、3、4、5、6、7,运算规则为”逢八进一”。

由于二进制数据的基数R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基数n=8=2^3,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。

八进制也有两种表示方法,使用下标或后缀O,例如:
374583745_{8} 37458
或者在数字后面加上后缀O,如:3745O

另外一个八进制数,可以用3个二进制数来表示。例如:
37458=01111110010123745_{8} = 011111100101_{2} 37458=0111111001012

十六进制

十六进制的引入同样是因为二进制数在实际使用中因为位数太长,不容易记忆才提出了十六进制数。

十六进制有16个基本数字,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则为”逢十六进一”。

十六进制有两种表示方法,使用下标或后缀H,例如:
7e5167e5_{16} 7e516
或者在数字后面加上后缀H,例如:7e5H

一个十六进制数,可以用4位二进制数来表示。例如:
7e516=01111110010127e5_{16} = 011111100101_{2} 7e516=0111111001012

补充小知识-进制的中英文表示:
  • Binary - 二进制

  • Octal - 八进制

  • Hexadecimal - 十六进制

  • Decimal - 十进制

看完之后是不是知道后缀的字母是什么含义了吧

下面这个表格有助于我们理解各个进制之间的关系:

10进制012345678910111213141516
2进制0110111001011101111000100110101011110011011110111110000
8进制01234567101112131415161720
16进制0123456789ABCDEF10

进制转换

我们在上面了解了常用的进制,后面在实际工作中我们可能会在不同的场景下用到不同的进制表示,这就涉及到进制的转换了,那么我们介绍一下常用的进制是如何进行转换的。

1、二进制与十进制之间的转换

十进制转二进制

计算方法:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。最后读数时,从最后一位读起。

例如:

十进制数:2021 转二进制后,二进制数为: 11111100101B

计算过程如下:

第N次十进制数 2021余数
第1次2021 / 210101
第2次1010 / 25050
第3次505 / 22521
第4次252 / 21260
第5次126 / 2630
第6次63 / 2311
第7次31 / 2151
第8次15 / 271
第9次7 / 231
第10次3 / 211
第11次1 / 201

计算完成后,从最后一位读起,最后结果为:11111100101B

二进制转十进制

计算方法为:把二进制数按权展开,相加既得十进制数。

例如:

二进制数:11111100101B 转十进制后,十进制数为: 2021

计算过程如下:

二进制11111100101
位数109876543210
公式2^102^92^82^72^62^50 * 2^40 * 2^32^20 * 2^12^0
结果1024512256128643200401

最后将每一位计算结果相加,即
210+29+28+27+26+25+(0∗24)+(0∗23)+22+(0∗21)+20=1024+512+256+128+64+32+0+0+4+0+1=20212^{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 210+29+28+27+26+25+(024)+(023)+22+(021)+20=1024+512+256+128+64+32+0+0+4+0+1=2021
最后计算结果为:2021

2、二进制与十六进制之间的转换

十六进制转二进制

计算方法:十六进制数通过除2取余法,得到二进制数,对每个十六进制数为4个二进制数,不足时在最左边补领。

例如:

十六进制数:7e5H 转二进制后,二进制数为:011111100101B

计算过程如下:

首先,将十六进制7e5数分成三部分7、e、5,分别做除2取余:

第N次十进制数 7余数
第1次7 / 231
第2次3 / 211
第3次1 / 201

7 转换为二进制数得 0111,不足四位,前面补零。

第N次十进制数 14 (e 的十进制数)余数
第1次14 / 270
第2次7 / 231
第3次3 / 211
第4次1 / 201

e 转换为二进制为:1110

第N次十进制数 5余数
第1次5 / 221
第2次2 / 210
第3次1 / 201

5 转换为二进制为:0101,不足四位,前面补零。

最后计算结果为:011111100101B

二进制转十六进制

计算方法:4位二进制数按权展开相加得到1位十六进制数。注意,4位二进制数转成十六进制数是从右到左开始转换,不足时补0。

例如:

二进制数:011111100101B 转十六进制后,十六进制数为: 7e5H

计算过程如下:

首先将二进制数按每4位进行分隔,得到 0111,1110,0101,然后分别计算十六进制数

二进制0111
位数3210
公式0 * 2^32^22^12^0
结果0421

0∗23+22+21+20=0+4+2+4=70 * 2^3 + 2^2 + 2^1 + 2^0 = 0+4+2+4=7 023+22+21+20=0+4+2+4=7

0111 转换为十六进制为 7

二进制1110
位数3210
公式2^32^22^10 * 2^0
结果8420

23+22+21+0∗20=8+4+2+0=142^3 + 2^2 + 2^1 + 0 *2^0 = 8+4+2+0=14 23+22+21+020=8+4+2+0=14

0111 转换为十六进制为 e

二进制0101
位数3210
公式0 * 2^32^20 * 2^12^0
结果0401

0∗23+22+0∗21+20=0+4+0+1=50 * 2^3 + 2^2 + 0 * 2^1 + 2^0 = 0+4+0+1=5 023+22+021+20=0+4+0+1=5

0101 转换为十六进制为 5

最后计算结果为:7e5H

3、十进制与十六进制之间的转换

十六进制转十进制

计算方法为:把十六进制数按权展开,相加既得十进制数。

例如:

十六进制数:7e5H 转十进制后,十进制数为: 2021

计算过程如下:

十六进制数7e5
位数210
公式7 * 16^214 * 16^15 * 16^0
结果17922245

7∗162+14∗161+5∗160=1792+224+5=20217 * 16^2 + 14 * 16^1 + 5 * 16^0 = 1792 + 224 + 5 = 2021 7162+14161+5160=1792+224+5=2021

最后计算结果为:2021

十进制转十六进制

计算方法:十进制数除8取余法,即十进制数除8,余数为权位上的数,得到的商值继续除8,依此步骤继续向下运算直到商为0为止。最后读数时,从最后一位读起。

例如:

十进制数: 2021 转十六进制后,十六进制数为: 7e5H

计算过程如下:

第N次十进制数 2021余数
第1次2021 / 161265
第2次126 / 16714
第3次7 / 1607

计算完成后,从最后一位读起,最后结果为:7e5H

总结

通过上面的介绍和例子,相信大家已经对进制有了深刻的认识和理解,一旦你搞懂他们之间的关系,将对我们在工作中遇到的很多疑问就会迎刃而解,也让我们在处理问题上变的更游刃有余。希望上面的讲解能对大家有所帮助,如果有任何这些方面的疑问,欢迎留言骚扰。

技术人,技术魂,每天肝一篇技术文,ヾ(◍°∇°◍)ノ゙哈哈~

关于作者
  • GitHub:https://github.com/ForTheDevelopers
  • 掘金:https://juejin.cn/user/1204720472953022
  • CSDN:https://blog.csdn.net/ForTheDevelopers
  • 知乎:https://www.zhihu.com/people/forthedevelopers
  • segmentfault:https://segmentfault.com/u/for_the_developers
联系作者
  • 微信号:ForTheDeveloper

微信号

  • 公众号:ForTheDevelopers

公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

切换分支 如何判断 是否完成_如何判断展览公司是否专业?

可以看出,展会装修目前市场上的展览设计公司数量非常庞大,许多公司目前正在从事这方面的业务。对于每个人来说,展览设计公司之后有很多好处,所以当你继续选择时,选择面会变得更加广泛。无论人们如何选择展览设计公司&a…

二月:冷清的春节

hi,大家好,我是开发者FTD。二月份就这么悄无声息的过完了,时间真的过得太快了,而且二月份还比其他月少了几天,再加上春节的时间,感觉就更快了。按照惯例,今天也对二月份做个总结,以迎…

python 除法取模_跟我一起学python | 探究05

算术运算、比较运算、赋值运算、位和位运算、运算优先级python里的算术运算我们最熟悉的计算就是算术运算,加减乘除等。在python的算术运算中,除了四则运算外,还有幂运算、取模、取整运算。什么是取模、取整运算呢?取模和取整运算…

中有atoi函数吗_C++ 多态的实现及原理,深挖vptr指针,手动调用虚函数

什么是多态?父类指针即根据指向的不同对象,响应同一消息(函数调用),产生不同行为。多态三要素?1,继承2,虚函数重写3,父类指针(引用)指向子类对象多态的实现很简答,让我们来看一段代码…

一文带你读懂base64编码

hi,大家好,我是开发者FTD。相信很多同学在工作中,经常会用到Base64编码,那大家知道为什么会有Base64编码吗?我们为什么要使用它呢,它又是怎么实现的呢?下面就让我们来一起深入探究一下Base64编码…

不显示参数名_第51p,万能参数与返回值,Python中函数的返回值

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第51篇文章,第三阶段的课程:Python进阶知识:详细讲解Python中的函数(四)>函数的参数与返回值(下篇)。函数是非常…

阿里云服务器安装JDK指南

hi,大家好啊,好久不见,最近阿里云双十一做活动,很多博主都在做购买返现活动,不知道大家有没有去白嫖他们一个服务器,服务器买来可以用来学习一下服务器搭建,应用部署等等,可以做的事…

销售流程图_工作流程图网络图模板,招聘销售合同库存,完整设计拿来就用

Hello大家好,我是帮帮。今天跟大家分享一组工作流程图模板,招聘销售合同库存,完整设计拿来就用。为了让大家能更稳定的下载模板,我们又开通了全新下载方式(见文章末尾),以便大家可以轻松获得免费模板和收费模板。メ大家…

协议详解_I2C协议详解

I2C通信协议I2C通信协议的基础简介I2C「Inter-integrated Circuit」总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计。I2C是同步传输信号,关于同步和异…

http 302错误_http面试题

作者:忘れられたくない出自:SegmentFault 思否原文:segmentfault.com/a/1190000024538846http状态码分类1xx服务器收到请求2xx请求成功3xx重定向4xx客户端错误5xx服务端错误常见状态码200 成功301 永久重定向302 临时重定向304资源未被修改40…

controller属于哪一层_孺教网分享|家长层次有五层,家长们都来看看,你属于哪一层?...

经常听到这样一些话:养不教父之过,有其父必有其子。孩子是父母的影子,父母是孩子的第一任老师.......这些都反映了在孩子成长的过程中,家庭教育的重要性。而家庭教育往往体现在非智力因素方面,比如感恩、诚信、善良、尊…

cad里面f命令用不了_CAD出现命令无效、失灵等问题?不用慌,两招帮你快速解决...

一、CAD常见无效问题1、填充命令无效我们有时候需要对某一区域进行填充,但是却发现怎么也填充不出来,这个时候就应该检查一下【选项】设置了,具体操作步骤如下:①命令行中输入【OP】,按下回车键调出【选项】对话框&…

卫生纸玫瑰花折法5步_餐巾纸折纸玫瑰花的折法图解教程

餐巾纸折纸玫瑰花的折法图解教程折纸玫瑰花的制作方法非常的多,但是常见的折纸玫瑰花制作方法基本上都是以方形纸张进行折叠来制作而成的。这里介绍的这种折纸玫瑰的制作方法更加的简单、经济和环保一些。同时其有着一个极大的优点,那就是无论在哪里都可…

mysql status_mysql status查看

总结了几种查看MySQL运行状况的方法,如下:1、phpMyAdmin最简单的方式,在phpMyAdmin直接点击状态查看,详细如下图。这查看的是MySQL的一些运行状况数值,这种方式被大多数系统管理员所不齿,因为专业的MySQL服…

windows mysql 备份_Windows下MySQL数据库备份脚本(二) | 系统运维

说明:MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0MySQL数据库存放目录:C:\Program Files\MySQL\MySQL Server 5.0\dataMySQL数据库备份目录:D:\MySQLdata_Bak实现目的:备份MySQL数据库存放目录中的m…

mysql8解决区分大小写问题_球磨机“包球”和“饱磨”分不清?点进来快速区分,解决问题...

球磨机的“包球”和“饱磨”现象都是设备在磨矿过程中出现的常见故障,大多数用户对这两种情况不是特别了解,出现问题时也不知从何下手,导致机器无法正常作业。其实“包球”和“饱磨”有一定的相似之处,同时在产生原因、处理方法等…

控制浏览器增加新页签的js_技术网站重写复制按键 js 跳转到注册页,就能增加用户?...

背景技术网站重写复制按键的 js ,作为开发人员你会为了复制一段代码而注册一个用户吗?一个小需求变动,将跳转详情页改为 target_blank 的方式打开新页面。原来用 Vue.js 的路由代码 push 需要换成 resolve ,本文将介绍该需求调整过…

win7系统一直反复重启_iPhone7开机白苹果反复重启进不了系统维修过程

故障现象iPhone7开机时在出现苹果图标后反复重启,无法进入系统。维修过程拿到手机之后开机测试,在显示苹果图标界面反复重启。这种故障是开机过程不能通过自检造成的。由于客户要保留资料,所以是不能刷机。根据经验判断应该是基带部分有问题。…

mysql去掉小数点多余0_mysql数据库个性化需求:版本号排序

概述今天主要介绍一个MySQL数据库版本号排序问题,一起来看看吧~需求按版本号排序,版本号字段为字符类型,其中1.2.10应大于1.2.9,但mysql数据库会认为1.2.9大于1.2.1正确的版本号应该是 1.3.0 大于 1.2.231.2.10 大于 1.2.9实现sql…

mysql语句在哪编写_mysql常见问题七:编写sql语句

一、删除除了学号字段以外,其它字段都相同的冗余记录,只保留一条!(也就是要删除凤姐和田七中一条重复数据只留一条)要求结果数据:原始数据:CREATE TABLEtbl_students (idint NOT NULL,namevarchar(10) DEFAULT NULL,sa…