python中关于位运算符和逻辑运算符的使用

运算符

Python 中的位运算符用于对整数的二进制位进行操作。以下是 Python 中常用的位运算符:
一.按位与 (&): 对应的两个位都为1时,结果才为1。
例如:5 & 3 的二进制表示分别是 101 和 011,按位与的结果是 001,即十进制的 1。
二.按位或 (|): 对应的两个位中至少有一个为1时,结果为1。
例如:5 | 3 的二进制表示分别是 101 和 011,按位或的结果是 111,即十进制的 7。
三.按位异或 (^): 对应的两个位相同则结果为0,不同则结果为1。
例如:5 ^ 3 的二进制表示分是 101 和 011,按位异或的结果是 110,即十进制的 6。
四.按位取反 (~): 反转操作数的每一位,即1变成0,0变成1。
例如:5 的二进制表示是 101,取反后是 010。对于取反操作符 ~,它对整数的二进制表示进行按位取反,即将所有的 0 变成 1,所有的 1 变成 0。对于整数 5:
二进制表示为 00000000000000000000000000000101(这里假设使用32位表示,实际位数会根据需要动态调整)。
取反后变为 11111111111111111111111111111010。
但是,这个结果并不是 -6,而是 -6 的补码表示。在计算机中,负数通常使用补码来表示。要理解这个结果,我们需要知道补码的概念:
正数的补码就是其本身。
负数的补码是其相反数的二进制表示取反加 1。
对于 5 的相反数是 -5,其二进制表示(假设32位)是 00000000000000000000000000000101。取反得到 11111111111111111111111111111010,然后加 1 得到 11111111111111111111111111111011,这就是 -5 的补码表示。
因此,~5 的结果实际上是 -6 的补码表示,而不是 -6 本身。在 Python 中,你可以直接使用这个补码表示,Python 会根据上下文自动处理整数的大小和符号。如果你需要将这个补码转换为实际的十进制表示,可以使用内置的 int() 函数。
五.左移 (<<): 将一个数的所有位向左移动指定的位数,左边超出的位被丢弃,右边空出的位补0。
例如:5 << 1 的二进制表示是 101,先对其补够8位,变成00000101左移1位后变成0000 1010,即十进制的 10。
六.右移 (>>): 将一个数的所有位向右移动指定的位数,右边超出的位被丢弃,左边空出的位补最高位的值(符号位)。
例如:5 >> 1 的二进制表示是 101,先对其补够8位,变成00000101,右移1位后变成000010 10,即十进制的 2。
位运算符在编程中常用于优化性能,特别是在处理位字段和位掩码时非常有用。

逻辑运算符

一.逻辑与 (and): 当两个操作数都为 True 时,结果才为 True。如果第一个操作数为 False,则不会计算第二个操作数。

例如:True and False 的结果是 False。

二.逻辑或 (or): 当至少有一个操作数为 True 时,结果为 True。如果第一个操作数为 True,则不会计算第二个操作数。

例如:True or False 的结果是 True。

三.逻辑非 (not): 反转操作数的布尔值,True 变为 False,False 变为 True。

例如:not True 的结果是 False。

当然,还有一种理解方式,这个比较好理解一点,这里我们做个假设: 

a=3

b=4

print(a and b)#输出4

因为若a的布尔值为True,and将会返回b的值

若a的布尔值为False,则不会评估b的值,直接返回a的值

例如:print(8<7 and 6>5)#这里8<7为False,6>5为True,所以直接返回false

a=3

b=4

print(a or b)#输出3

因为若a的布尔值为True,将返回a的值,将不会评估b的值

若a的布尔值为False,则会返回b的值

例如:print(7<8 or 9>7)#结果为True,因为7<8为False,会直接返回b的布尔值为True

        若以上内容有错误之处,请大家批评指正,若涉及侵权行为,请及时告知,我会对相关内容进行删除,忘大家予以海涵,诚挚感谢大家的支持๑•́₃•̀๑。

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值