python学习笔记08 python中的进制、进制转换、原码反码补码
上一篇记录中我们学习了python中的列表、元组、字典、集合,以及他们的常用功能。
python中的列表、元组、字典、集合
这一篇我们来介绍python中的进制、进制转换、原码反码补码
进制
整数的几种进制表示法
二进制: 由0,1构成,逢2进1,以0b开头
八进制: 由0,1,2,3,4,5,6,7构成,逢8进1,以0开头
十进制: 由0,1,2,3,4,5,6,7,8,9构成,逢10进1,默认就是10进制
十六进制:由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,逢16进1,以0x开头
如何从其他进制转10进制
十进制转十进制
十进制:12345
12345=10000+2000+300+40+5
=1\*10^4+2\*10^3+3\*10^2+4\*10^1+5\*10^0
=10000+2000+300+40+5
=12345
规律口决: 系数*进制的幂次方之和
二进制:0b10011
10011=>1\*2^4+0\*2^3+0\*2^2+1\*2^1+1\*2^0=16+2+1=19
如何从10进制转其他进制
除基取余,直到商为0,余数反转
十进制:108 二进制:0b1101100
108/2=54......0
54/2=27 ......0
27/2=13 ......1
13/2=6 ......1
6/2=3 ......0
3/2=1 ......1
1/2=0 ......1
如何从其他进制转其他进制
拆分组合法[只适合二进制转八进制或者16进制]
二进制转八进制,从右往左,每3位一组合,每个组合算自己的10进制结果,拼接
二进制转十六进制,每4位一组合,每个组合算自己的10进制结果,拼接
二进制:0b1101100 八进制:0154
100--->4
101--->5
001--->1
二进制:0b1101100 十六进制:0x6c
1100--->12
0110--->6
先转10进制,再转其他进制
原码 反码 补码
计算机所有数据的运算采用的是补码进行的
原码 反码 补码均是数据的二进制的形式
原码:
正数:数值位就是二进制的表现形式,最高位符号位就是0
负数:数值位和正数保持一致,但是最高符号位为1
举例:
3的原码:
1. 3的二进制:11
2. 3的原码: 00000011
-4的原码:
1. 4的二进制:100
2. -4的原码: 10000100
反码:
正数:和原码保持一致
负数:符号位原码保持一致,数值位按位取反
举例:
3的反码: 00000011
-4的反码:11111011
补码:
正数:和原码保持一致
负数:是反码的基础之上末尾+1
举例:
3的补码: 00000011
-4的补码:11111100
举例:-4+3 = -1
-4的补码+3的补码:
00000011
+ 11111100
-----------
补码:11111111
我们最终看到的结果是转原码再转10进制之后的结果 -1
已知补码求原码:
符号位 数值位
补码: 1 1111111
反码: 1 1111110
原码: 1 0000001
--------------------------
数值位转10进制:1,又因为最高位是1,所以是负数,索引最终的结果是 -1
3的补码: 00000011
-4的补码:11111100
a = 3
b = -4
print(a & b) # 0 有0则0
00000011
& 11111100
------------------
00000000
print(a | b) # -1 有1则1
00000011
| 11111100
-----------------
补码:11111111
已知补码求原码
补码: 11111111
反码: 11111110
原码: 10000001
----------------
结果: -1
print(a ^ b) # -1 相同则0,不同则1
00000011
& 11111100
-----------------
补码:11111111
已知补码求原码
补码: 11111111
反码: 11111110
原码: 10000001
----------------
结果: -1
print(~ b) # 3
~ 11111100
-------------
00000011
12的补码: 00001100
-12的补码:11110100
print(12<<2) 左移,左边多的位丢弃,右边用0补齐,左移n位相当于*2^n
00001100
左移2位 (00)00110000
--------------------
00110000 -> 32+16 = 48
print(-12<<2) # -48
print(12>>2) 右移,右边多的位丢弃,左边若最高位是0就用0补齐,若最高位是1就用1补齐,右移相当
于除以2^n次方
00001100
右移2位 00000011(00)
---------------------------
结果:3
print(-12>>2) # -3
学习完了补码,我们就可以介绍python中的位运算符了。
下回我们将认识python中的各类运算符,点赞收藏关注,一起打卡python学习吧
作者:伊一大数据&人工智能学习日志