Python 二进制 八进制 十进制 十六进制之间的转换

众所周知:计算机底层是以二进制数来进行存储计算,而计算机进制:数制是用一组固定的符号和统一的规则来表示数值的方法。

开始下面讲述之前首先要声明:

二进制,八进制,十六进制 都可以转换为十进制,十进制也可转换为二进制,八进制,十六进制  ,二进制 八进制 十六进制相互之间不能直接转换,必须依托十进制,例如:二进制转换为八进制  二进制先转换为十进制,由十进制来转换为八进制

 二进制(0b开头):

二进制数中的数字元素只能由0和1构成 逢2进位  例如: 十进制数 3 是由 3 = 2+1 现在他们都是按照零位来看 ,二进制逢2进1位 ,1还是0位1,经过二进制转换十进制3转换为二进制数 就是 1 1

八进制(0o开头):

是由0-7之间的数字构成,满八进一位

十进制数:

就是我们常用于数学计算的进制关系,逢十进一

十进制数(我们常用的数学算数就是十进制): 是由 0~9这九个数字构成,逢10进1位,这里10指的是一位,比如0位凑够了10就要给1位加1

扫描二维码关注公众号,回复: 15257500 查看本文章

十六进制: 0x 开头

十六进制数字是由 0  1  2  3  4  5  6  7  8  9  A   B    C   D   E   F

                                                10  11  12   13  14  15

其中从10开始皆有 大写英文字母以 A~F 来表示10 ~15的数字

 二进制转换十进制:

二进制的是由0和1组成的字符串 逢二进位 ,什么意思呢  二进制中如果一个数字大于2就需要进往前进一位  

二进制的基数是2 

1 等于2的0次方

10 等于2的1次方

100 等于 2的2次方

1000 等于 2的3次方

…       …….

……     ……….

10000000   等于 2 的3次方

实例:  0011001   二进制数

二进制数基本单位是bit(位)

          转换十进制

            位        6   5   4   3   2   1   0    

     将二进制数展开   0   0   1   1   0   0   1

从左往右看   1 = 1 x 20   0 = 0 x 21  0 = 0 x 22  1 = 1 x 23   1 = 1 x 24  0 = 0 x 25  0 = 0 x 26

然后把它们的和加起来:  1 + 0 + 0 + 8 + 16 + 0 + 0  = 25

所以说我们将二进制数:0011001 转化为十进制数为21

关于位应理解为2的几次方  从左往右看  第一个二进制数字就是  第0位,2的零次方 第二个二进制数是第 1 位 2的1次方,有1占位就给它乘以1是0占位就给它乘以0

例如:  二进制数1 0(一 零)  从左往右看 0  1  0 是 0 x 20    1 是 1 x 2 1   

所以 二进制数 1 0  转化为十进制数是  0 x 1 + 1 x 2  = 2   

我们用python程序来验证一下

print(int("0011001 ",base = 2))

int() 是将任何进制的数据转换为十进制数,"0011001 " 是需要进行转换的二进制字符串,

base = 2   base 等于 几就说明 字符串中的数据是几进制数

八进制数转换十进制数:

例如:八进制数35 转换为十进制数

 35

  35

2  17  1

2   8   1

2   4    0

2    2    0

2    1    0

          1

八进制35转换为二进制数是 100011

35的二进制数100011 转换为十进制数是

  1.   5
  1. 0

将35按照权展开

3 x 81 + 5 x 80  = 24 + 5 = 29

我们用python程序验证一下:

print(int("35 ",base = 8))

十六进制转换十进制:

十六进制数转换十进制数:

例如:将十六进制数 DF 转换为十进制数

D在十六进制数中表示13 F 表示15

DF  = 1315

将1315 转换为 十进制数

按权展开:

1    3    1   5

3    2    1    0

5乘以 16 的0次方 +  1 乘以16 的1 次方 + 3 乘以 16 的二次方 + 1乘以 16 的三次方

  1. + 16 + 768 + 4096 = 4885

十进制转换为二进制、八进制、十六进制

十进制转换二进制:

十进制除2反向取余数

例如: 33 转换为二进制是多少?

十进制数转换为八进制数:十进制数除8反向取余

例如: 十进制33 转换为八进制数:

十进制转换十六进制:

十进制除16反向取余数

例如: 是十进制数 33 转换为 十六进制数:

我们得到的结论是十进制数转换为几进制数,就除几,然后将得到的余数反向写出来

二进制 八进制 十六进制之间相互转换 :

如果是 二进制转换八进制 需要先把二进制数转换为十进制数,然后将十进制数转换为八进制数

例如: 二进制 110110转化为八进制是多少?

先将二进制数据转换为十进制数据

按权展开:

1    1    0    1   1   0                   二进制数据

5    4    3    2    1   0                    位

0 + 2 + 4 + 0 + 16 + 32 = 54

然后十进制数54 转换为八进制数   

除数               被除数              余数

8                       54

8                       6                     6

                                                 6       

反向取余数: 66 

由此得出二进制数110110 转换为八进制是66   

     

print(oct(54))                

要注意的是: 在程序中如果出现了一段字符串以0b开头 表示这是一段二进制数据

如果是0x开头说明这是一段十六进制数据,如果是0o开头说明这是一段八进制数据

下面是一些python用于进制之间转换的内置函数,虽然有方便的计算函数,但是我还是希望你能知晓其中的运算逻辑

#python中的由十进制转换为二进制,八进制,十六进制的方式  0b11001 0o31 0x19
bin() 函数
v1 = bin(25)  #由十进制转换为二进制   
# 0b11001  ob表示二进制标识符  11001 才是将十进制的25转换为 二进制的值
oct() 函数
v2 = oct(54)  # 由十进制转换为八进制
#0o31   0o 表示是八进制的标识符
hex() 函数
v3 = hex(25)  #由十进制转换为十六进制的方式
# 0x19       0x 表示十六进制的标识符
print(v1,v2,v3)

 

二进制八进制十六进制之间的转化函数:

# 将十六进制转为二进制
print(bin(int("1F606",base = 16)))  

bin()  说明最终的结果是二进制数据,int()说明先要转换为十进制数据 ,“1F606”  是待转化的字符串数据,base = 16  说明待转化的数据是十六进制 base 等于几就说明你想将那种数据转换成为十进制数据

#将十六进制转换为八进制:
print(oct(int("DF",base = 16)))

其他照同上述阐述

#将二进制转换成为十六进制
print(hex(int("110110",base = 2)))

猜你喜欢

转载自blog.csdn.net/weixin_59131972/article/details/130376256