算数运算符
a = 10, b = 20
运算符 | 释义 | 示例 |
---|---|---|
+ | 加 | a + b = 30 |
- | 减 | a - b = -10 |
* | 乘 | a * b = 200 |
/ | 除 | b / a = 2 |
% | 余数 | b % a = 0 |
// | 商 | b // a = 2 |
** | 幂 | a ** b (10的20次方) |
注意:
+ 两边都是数值的时候表示运算
+ 有字符串的时候表示连接符('s' + 3 = 's3')
* 有字符串的时候表示重复字符串次数('s' * 3 = 'sss')
/ 被除数不能为零
赋值运算符
a = 10, b = 20
运算符 | 释义 | 示例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 余数赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 商赋值运算符 | c //= a 等效于 c = c // a |
关系(比较)运算符
返回Bool类型,True or False
a = 10, b = 20
运算符 | 释义 | 示例 |
---|---|---|
== | 等于 - 比较两个对象是否相等 | (a==b)False |
!= | 不等于 - 比较两个对象是否不相等 | (a!=b)True |
> | 大于 | (a>b)False |
< | 小于 | (a<b)True |
>= | 大于等于 | (a>=b)False |
<= | 小于等于 | (a<=b)True |
逻辑运算符
a = 10, b = 20
运算符 | 逻辑表达式 | 描述 | 示例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回20 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。 | (a or b) 返回10 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
进制
二进制: 0-1
八进制:0-7
十进制:0-9
十六进制:0-9-a-f
计算机二进制运算:正数负数的二进制第一位为符号位0正数1负数
原码:正数二进制
反码:0>1 ,1>0
补码:反码+1
负数:计算机所有负数都用补码表示
-3的二进制:
1.找3的二进制码: 0000 0011
2.求第一步的反码:1111 1100
3.反码+1为补码:1111 1101
普通进制转换:
二进制转十进制:byte1*2**0 + byte2*2**1 +byte3*2**2 + 。。。
十进制转二进制:除2求倒余数
二进制转八进制:byte1*8**0 + byte2*8**1 +byte3*8**2 + 。。。
八进制转二进制:155(八进制)》 一位变三位(变成二进制)》1》001, 5 》101,5 》101,合并 01101101得到结果
十六进制转二进制类似八进制转二进制,一位变三位
其余情况,与十进制转换就是除进制求倒余数。
python进制转换:
二进制表示方式:a = 0b01001011 (0b开头)
八进制表示方式:a = 0o113 (0o开头)
十进制表示方式:a = 75
十六进制表示方式:a = 0x4b (0x开头)
转二进制:bin() | 转八进制:oct() | 转十进制:int() | 转十六进制:hex()
注意:int(字符串,base=2) 转十进制 字符串对应后面的base, 0b01001011 对应2 int(0o113, base=8),这样才不会报错。
位运算符
二进制数据运算
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
运算符 | 描述 | 示例 |
---|---|---|
& | 位与:相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 位或 :相应位存在1,则该位的结果为1,全为0才为0 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 位异或: 对应位相同为0不同为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 位取反: 1变0,0变1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
<< | 位左移:高位丢弃,低位补0 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 位右移:低位丢弃,高位正数补0负数补1 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
右移快速运算:(x // 2**n) 数除以2的右移位数 取整(56>>3 = 56//2**3)
左移快速运算:(x * 2**n) 数乘以2的左移位数 取整(2<<3 = 2*2**3)
成员运算符
运算符 | 释义 |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
身份运算符
身份运算符用于比较两个对象的内存地址是否相同
运算符 | 释义 |
---|---|
is | is 是判断两个标识符是不是id相同 |
not is | is not 是判断两个标识符是不是id 不相同 |
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
三目运算符
a+b if a>b else a-b | 结果1 if 条件 else 结果2
运算符优先级
以下表格列出了从最高到最低优先级的所有运算符,()可改变优先级。
运算符 | 释义 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 位右移,左移 |
& | 位与 |
^ | | 位异或、位或 |
<= < > >= | 比较运算符 |
== != | 等于不等于 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
not and or | 逻辑运算符 |