二进制是由 0 ~ 1 组成的
八进制是由 0 ~ 7组成的
十进制是由 0 ~ 9组成的
十六进制是由 0 ~ 15 组成的,可是 9 后面的的 10 是用字母来代替 A~ F ,也就是 0 ~ F,用字母代替了数字,避免不再重复
之前刚接触
python
的时候学了以下
二进制
,现在从八进制开始继续往下走
python
提供了一个方法,可以将任意数字专成
八进制
oct()
: 将任意数字转成
八进制
如:
a = oct(1)
print(a)
>> 0o1
运行结果
0o1
,
o
代表就是
八进制
,前面的为零,如果数值为 8 的话就是
0o10
,逢 8 进 1 ,如:
a = oct(8)
print(a)
>> 0o10
其余过程和二进制一样算,十进制其实就是数值本身,可以直接过滤了,如:
1=1
,
2=2
,
3=3
接下来看看 十六进制:
python
也内置了一个数字转
16进制
的方法,如:
hex()
: 将任意数值专程
16进制
如:
a = hex(123123123)
print(a)
>> 0x756b5b3
运行结果
0x756b5b3
,
x
代表就是
十六进制
,前面的为零,如果数值为
16
的话就是
0o10
,逢 16 进 1
在前面的章节当中了解到
2 进制
是及其能读懂的语言,那么
十进制
,其实是我们人类能读懂的,那么
八进制
和
十六进制
又是怎么一回事呢,其实啊,在一些古老的语言里面
八进制
还是用的比较多的,但是现在在
python
里面用的已经不多了,因为
python
可以让很多语言融合进去,所以
python
内置了
八进制
的转换方法,所以可以直接忽略他,那么
十六进制
又是怎么一回事呢?我用电脑上内置的
python2
版本 来做一个演示就明白了:
可以看到,我在终端中给变量
a
赋值了其实他打印出来的是
十六进制
的代码,以
x
开头的 不会超过字母
f
,如果我用内置的
print()
函数打印,那么出来的就是未被
十六进制
转变的代码,但是在
python3
版本后是不会直接被转成
十六进制
,可是
python
读取出来的还是
十六进制
,所以我们在
python
的学习当中用的最多还是
十六进制
和
二进制
,毕竟
二进制
是计算机的根本
那么为什么 python 里面要用 16进制 呢?
1、计算机硬件是
0101
二进制的,
16进制
刚好是
2
的倍数,更容易表达一个命令或者数据,
十六进制
更加简短,因为换算的时候
16进制
可以顶
4位
2进制数,也就是一个字节(
8进制可以用两个16进制表示
)
2、最早规定的
ASCII
字符集采用的就是
8bit
(后期扩展了,但是基础单位还是
8bit
),
8bit
用两个
16进制
就能表达出来,不管阅读还是储存都比其他进制要方便
3、计算机中
cpu
运算也是遵循
ASCII
字符集,以16、32、64这样的方式在发展,因此数据交换的时候 16进制 也显得更好
4、为了统一规范,cpu、内存、硬盘我们看到的都是采用的
16进制
计算
那么 16进制 应该要用在哪里呢?
1、网络编程,数据交换的时候需要对字节进行解析都是一个
byte
一个
byte
的处理,一个
byte
可以用
0xff
两个
16进制
来表达,通过网络抓包,可以看到数据是通过
16进制
传输的
2、数据存储,储存到硬盘中是
0101
的二进制方式,储存到系统的表达方式都是
byte
方式
3、一些常用值的定义,比如前端
CSS
(层叠样式表) 的一些属性如:
color:#f00
这种就是用
16进制
的方式,4个
16进制
可以表达好几百万的颜色信息。