上一篇记录中我们学习了介绍python中的进制、进制转换、原码反码补码
这一篇我们来介绍python中的各类运算符及使用
运算符
操作数:参与运算的变量或者常量或具体的数值
操作符:将参与运算的量连接起来的符号
表达式:由操作数和操作符构成且符合python语法规范的式子,不同的操作符可以称为不同类型的表达式
算术运算符
a = 3
b = 4
print(a + b) # 7
print(a - b) # -1
print(a * b) # 12
print(a / b) # 0.75
print(a % b) # 3
print(a ** b) # 81
print(a // b) # 0 整除
比较(关系)运算符
特别注意:
= 赋值运算符,== 比较运算符
比较运算符的结果一定是bool类型的
扩展知识:比较两个非基本数据类型的变量
list1 = [11, 22, 33]
list2 = [11, 22, 33]
# python中==比较列表,元组,字典比较的是内容值
print(list1 == list2) # True
# 比较两个非基本数据类型:
# 方式1:使用is关键字
print(list1 is list2) # False
# 方式2:使用python内置函数id()
print(id(list1))
print(id(list2))
print(id(list1) == id(list2)) # False
赋值运算符
# = 将右边的值赋值给左边的变量或常量
a = 3
# a += 4 # a = a + 3
# print(a)
# a -= 4
# print(a)
# a *= 4
# print(a)
# a /= 4
# print(a)
# a %= 4
# print(a)
# a **= 4
# print(a)
a //= 4
print(a) #0
逻辑运算符
-
and 且 有False则False
a = 3 b = 4 print(a > 3 and b > 4) # False and False = False print(a == 3 and b > 4) # True and False = False print(a > 3 and b == 4) # False and True = False print(a == 3 and b == 4) # True and True = True
-
or 或 有True则True
a = 3 b = 4 print(a > 3 or b > 4) # False or False = False print(a == 3 or b > 4) # True or False = True print(a > 3 or b == 4) # False or True = True print(a == 3 or b == 4) # True or True = True
-
not将True变成False,将False变成True
a = 3 b = 4 print(not a > b) # True
位运算符
计算机所有数据的运算采用的是补码进行的,而原码 反码 补码均是数据的二进制的形式。所以需要会进制转换方可顺利使用位运算符,
进制转换,原码 反码 补码的内容可跳转至上一篇文章
进制转换,原码 反码 补码
原码 反码 补码
-
计算机所有数据的运算采用的是补码进行的
-
原码 反码 补码均是数据的二进制的形式
原码: 正数:数值位就是二进制的表现形式,最高位符号位就是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学习吧