1, 布尔运算符
运算符; not and or
not 运算符:
作用:逻辑取反
语法: not 表达式
例: not True # False
not False # True
not 100 #False 相当于not bool(100)
not 0.0 #True
not 0j #True
not 1+2j #False
not ‘ ’ #True
not “False” #False
not None #True
“False”(字符串)和 False 布尔类型
score = int(input("请输入:"))
if not 0 <= score <= 100:
print("Error, 您输入的不对!")
>>>
请输入:1000
Error, 您输入的不对!
>>>
and 运算符:
作用: 返回优先为假值(False)的对象
语法: 表达式1 and 表达式 2
例: 0 and 100 # 返回0
100 and 200 #返回200
说明: 当表达式1 的布尔测试值为True时, 返回 表达式2, 否则返回表达式1 。
bool(表达式1) and bool(表达式2) 结果的布尔测试值:
---------------------------------------------------------------------------
False False False
False True False
True False False
True True True
and 真值表:
x and y
bool(x) 返回值
True y #如果x为True,则返回y
False x #如果x为False ,则返回x
or 运算符:
作用:
优先返回值为真(True)的对象
语法: 表达式1 or 表达式2
例:
0 or 100 返回值是100
100 or 0 返回值 100
0.0 or 0 返回 0
3.14 or 0.618 返回 3.14
正负号运算符:
+(正号) 、 -(负号)
语法:
+ 表达式
- 表达式
说明:一元运算符;
位运算:
运算符:
& 位与
| 位或
^ 位异或
<< 左移
>> 右移
~ 求反
& 位与:
语法
表达式x & 表达式y
作用:
按位操作, 1,两个对应的位都为1,则结果为1
2,两个对应的位只要有一个为0,则结果为0
bin(x)函数:
bin(x) 将x转换为二进制(binary)的字符串
>>> bin(1)
'0b1'
>>> bin(2)
'0b10'
>>> bin(3)
'0b11'
>>> bin(4)
'0b100'
>>> bin(5)
'0b101'
>>> bin(6)
'0b110'
>>> bin(7)
'0b111'
>>> bin(8)
'0b1000'
>>> bin(9)
'0b1001'
>>> bin(10)
'0b1010'
>>> bin(11)
'0b1011'
| 位或
语法:
表达式x | 表达式y
作用:
按位操作, 两个对应的位只要有一个为1,则结果为1
两个对应的位都为0,则结果为0
^ 位异或
语法:
表达式x ^ 表达式y
作用:
按位操作, 两个对应的位不同,结果为1
两个对应的位相同,结果为0
<< 左移运算
语法格式:
表达式x << 整数表达式y
作用:
将x的二进制值,按位向左移动y位,低位补0
例:
x = 6 << 1
>> 右移运算
语法格式:
表达式x >> 整数表达式y
作用:
将x的二进制值,按位向右移动y位,低位溢出丢弃
例:
6 >> 1 # 3
6 >> 2 # 1
6 >> 3 # 0
6 >> 100 # 0
~ 按位求反
语法格式:
~ 表达式
作用:
将数据二进制相应位取反 ;
例:
~ 6
>>> ~1
-2
>>> ~2
-3
>>> ~3
-4
>>> ~4
-5
>>> ~5
-6
>>> ~0
-1
>>> ~7
-8
>>> ~10
-11
>>> ~200
-201
练习:
IP = 0xc0a80164 # IP: 192.168.1.100
MASK = 0xFFFFFF00 # 子网俺码 255.255.255.0
求:IP & MASK 的值 # 网段地址:192.168.1.0
求: IP | ~MASK 的值 # 广播地址:192.168.1.255
hex(x) 将一个整数转为16进制的字符串
255 ->0b11111111