1、二进制
二进制都是由0和1组成
二进制标识为:0b
十进制的正整数转二进制:除以2求余,从右到左排列
print(bin(5))
负的十进制整数转二进制:先求其绝对值的二进制,取反,再在末位加1,最后再最左边加上符号位:0表示正数,1表示负数
示例:求-5的二进制表示:1011
– 求5的二进制:101
– 按位取反: 010
– 在末位加1: 011
– 加上符号位:1111 1011
bit:二进制位,每个二进制字符占的位置
byte:字节,一个字节为8个二进制位
通常用1个字节即8个二进制位表示一个数,如5的二进制表示方式为:0000 0101
二进制转十进制:每一位上的数字乘以2的n次方,从右到左,n依次为0、1、2…
101 --> 1* 2^2 + 0* 2^1 + 1* 2^0 = 5
2、八进制
八进制由0~7共8个数字组成
八进制标识为:0o
八进制转十进制:每一位上的数字乘以8的n次方,从右到左,n依次为0、1、2…
0o5430 --> 5* 8^3 + 4* 8^2 + 3* 8^1 + 0* 8^0 = 2840
八进制转二进制:求出八进制每个位上的数字对应的3位二进制,再依次拼接即可
示例:0o5430转0b
– 求出八进制每个位上的数字对应的3位二进制 5 4 3 0
101 100 011 000
– 再依次拼接:101100011000
3、十六进制
十六进制标识:0x
十六进制由:0~9,a-f,16个字符表示,其中a对应10,f对应15
十六进制转二进制:求出十六进制每个位上的数字对应的4位二进制,再依次拼接即可
示例:0x 9ab19转0b
– 9 a b 1 0
1001 1010 1011 0001 0000
– 10011010101100011000
4、位运算
4.1、 ‘&’ 与 运算
位运算中的与运算(&)是将数字转化成二进制,再将&运算符左右两边的数字上下对齐相加,1表示True,0表示False,上下两个均为True时才为True,最后再将结果转成十进制。类似逻辑运算符中的and
示例:print(3 & 2) --> 2
3的二进制表示:0000 0011
2的二进制表示:0000 0010
上下对齐相加: 0000 0010
转成十进制: 2
4.2、'|'或 运算
’|‘运算是将数字转化成二进制,再将’|‘运算符左右两边的数字上下对齐相加,1表示True,0表示False,只要有一个为True,则为True,最后再将结果转成十进制。类似逻辑运算中的or
示例:print(3 | 2) --> 3
3的二进制表示:0000 0011
2的二进制表示:0000 0010
上下对齐相加: 0000 0011
转成十进制: 3
4.3、‘~’ 非 运算
将数字转化成二进制,再将每一个二进制位上的数字取反,最后转成十进制
示例:print(~3) --> -4
3的二进制:0000 0011
取反: 1111 1100
转成十进制:-4
4.4、'^'异或 运算
转化成二进制后的两个数上下对齐比较,相同的是0,不同的是1
示例:print(3^5) --> 6
3的二进制:0000 0011
5的二进制:0000 0101
^运算: 0000 0110
转成十进制: 6
4.5、‘<<’ 左移
将转成二进制的数从左边开始移走相应的位数,不足8位的从右边开始用0补足8位
也可以理解为十进制的数乘以2的n次方
示例:print(16<<2) --> 64
16的二进制: 0001 0000
左移2位: 0100 00
从右边用0补足8位:0100 0000
转成十进制: 64
4.6、'>>'右移
将转成二进制的数从右边开始移走相应的位数,不足8位的从左边补足8位,负数补1,正数补0
也可以理解为十进制的数除以2的n次方
示例1:print(16>>2) --> 4
16的二进制: 0001 0000
右移2位: 01 0000
从左边用0补足8位:0001 0000
转成十进制: 64
示例2:print(-16>>2) --> -4
-16的绝对值: 16
16的二进制: 0001 0000
取反: 1110 1111
加1: 1111 0000
右移2位: 11 1100
从左边用1补足8位:1111 1100
转成十进制: -4
5、三目运算符
语法:
content1 if condition else content2 ''' 判断condition表达式是True还是False; 如果为True则将if前面的内容content1进行运算,并将content1的结果返回; 如果为False则将else后面的内容content2进行运算,并返回content2的结果 '''
示例:
a, b = 1, 2 result1 = (a + b) if a < b else (a - b) print(result1) # 输出:3 result2 = (a + b) if a > b else (a - b) print(result2) # 输出:-1