Pythoner:教你二进制八进制十六进制的快速转化

Hi,你的 Python 学的怎么样了?要记得每天进步一点点哦,跟小帅b做个约定,再过不久我们一起来项目实战,所以现在咱们少看点片,没事敲下键盘,练练 Python 吧。

 

640 要是哪一天,我能爬取所有苍井空老师的教育资源就好了。

 

 

额..咱们进入正题吧。 

 

1. 二进制

 

我们都知道,在计算机中,存储的数据都是像这样「010101010110010101...」的东东,这一串数字就是二进制

 

想想你家里的灯,是不是只有两种状态,一种是开灯,一种是关灯。

 

640

 

 

而我们的计算机在表示数据的时候也是按照这样的状态来表示的。也就是一开一关两个状态。

 

我们把 0 当做关,把 1 当做开!

 

640 0有点像把锁,1有点像把钥匙!emmmm..

 

 

但是现在想想啊,我们那么多数据,比如说一个 mp3 音乐,一部苍老师的教程视频,如果只让计算机仅仅以 0 和 1 这两种状态来表达这些数据,那是心有余而力不足的。

 

那么怎么办呢?这时候国际标准化组织就决定了,不够用是吧,那么用 8 个这样的状态来表达一个数据!

 

也就是:

 

一个数据 = 01010101 (8个状态) 

 

那么这样的由8个状态组成的数据就叫做字节

 

不信的话你可以随便点开的桌面的文件,右键打开属性看看,是不是都会给你显示这个文件的大小都会用字节来表示:

 

640

 

640 你这小黄图能否图片分享一下?

 

 

所以知道以下的东东代表的是什么了吧:

 

1byte(字节)= 8bit(位,状态)

1kb = 1024byte

1mb = 1024kb

1g = 1024mb

1tb = 1024g

 

 

2. 二进制怎么转化成八进制?

 

我们已经知道了一个字节需要8个二进制位来表示,有点长了,那么用八进制来表示的话就会短一点,比如说有怎么一个字节:

 

0101101

 

如果我们想把它变成 八进制 的话,那就从右到左,每三位当做一个,最左边的不够就补0。也就是说上面这个可以这样:

 

000101101

 

把每三位的整体转化成十进制的数,就变成八进制了。至于怎么转换,下面会说到。这时候用八进制就只用3个数就可以表示了。

 

3. 二进制怎么转化成十六进制?

 

同理,十六进制可以用更少的位数来表示,如果我们想把0101101变成 十六进制 的话,那就从右到左,每四位当做一个,最左边的不够就补0。也就是说上面这个可以这样:

 

00101101

 

把每四位的整体转化成十进制的数,就变成十六进制了。至于这么转换,下面也会说到。这时候用十六进制就只用2个数就可以表示了。

 

4. 不同的进制表达方式

 

二进制是由 「0,1」 组成,通常以 0b 开头。

 

八进制是由 「0,1,2,3,4,5,6,7」 组成,以 0 开头。

 

十进制是由 「0,1,2,3,4,5,6,7,8,9,0」 组成。

 

十六进制是由 「0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f」 组成,以0x开头的。

 

 

5. 进制之间的相互转化

 

在这里告诉大家一个进制之间快速转化的方法,当然,不是使用计算器啊 - -

 

首先你只要记住以下对应关系即可:

 

1    1    1    1    1    1    1    1

128 64  32  16   8    4    2    1

 

5.1 二进制转化为十进制

 

那么如果告诉你一个二进制 如 0b11111111,转化成十进制,怎么做呢?把对应的数加起来就可以了。

 

0b11111111 = 128+64+32+16+8+4+2+1 = 255

 

看到 255 有没有一种熟悉的感觉?

 

所以这时候再给你出道题,把 0b010110 转化成十进制你应该会了吧?

 

0b010110 = 16 + 4 + 2 = 22

 

5.2 十进制转化为二进制

 

同样的:

 

1    1    1    1    1    1    1    1

128 64  32  16   8    4    2    1

 

我们要把十进制如22,转为二进制就是:

 

22之内16有没有? 那么在16对应的地方就有1。

 

1    1    1    1    1    1    1    1

128 64  32  16   8    4    2    1

 

22-16=6,那么8对应的就不存在了。

 

1    1    1    1    1    1    1    1

128 64  32  16   8    4    2    1

 

6之内有4对吧,那么4对应的就有1,6-4=2,那么2也有,2-2=0,所以1就没了。

 

1    1    1    1    1    1    1    1

128 64  32  16   8    4    2    1

 

所以最后的答案就是 22 = 0b10110。

 

5.3 二进制转化为八进制

 

我们已经知道了在二进制中每三位的十进制代表一个八进制位:

 

000101101

 

那么这时候只要把这个二进制拆成三份,每一份转化成十进制,再组合起来就是八进制了。

 

000 = 0;

101 = 4+1 = 5;

101 = 4+1 = 5;

 

所以二进制 0b000101101 = 八进制0055。

 

5.4 二进制转化为十六进制

 

我们已经知道了在二进制中每四位的十进制代表一个十六进制位:

 

00101101

 

那么这时候只要把这个二进制拆成两份,每一份转化成十进制,再组合起来就是十六进制了。

 

0010 = 2;

1101 = 8+4+1 = D;

 

所以二进制 0b00101101 = 十六进制0x2D。

 

 

ok,以上,其实说实话,如果不懂这个也不影响后面使用 Python 来编程,但是懂的多一些总归没有什么坏处,另外你有没有看到我的排版是不是很良苦用心?请叫我良心b。

 

 

640

 

关注我,让你像看小黄文一样轻松学到 Python 的所有!

 

 

ps:还没获取我精心准备的 Python 电子书和思维导图等干货的可以在我的公众号「学习Python的正确姿势」中发送 python 免费获取哦! 

   

再ps:说真的,如果你能点个赞转发支持我一下我会更有动力写。

 

推荐阅读:

 

1.pick up Python

2.精心整理了一份python体系的思维导图

3.Pythoner :挑选一个Python编辑器

 

 

 

转载于:https://my.oschina.net/u/3887904/blog/1839691

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值