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
十六进制: 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 转换为十进制数是
- 5
- 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 的三次方
- + 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)))