python按位与怎么算_Python-按位操作和用法

小编典典

按位运算符是对多位值进行操作的运算符,但在概念上一次只能处理一位。

AND仅当其两个输入均为1时,才为1;否则为0。

OR如果其输入之一或全部为1,则为1,否则为0。

XOR仅当其输入之一恰好为1时为1,否则为0。

NOT 仅当输入为0时为1,否则为0。

这些通常可以最好地显示为真值表。输入的可能性在顶部和左侧,结果位是在输入的交点处显示的四个值之一(如果不是,则为两个,因为它只有一个输入)。

AND | 0 1 OR | 0 1 XOR | 0 1 NOT | 0 1

----+----- ---+---- ----+---- ----+----

0 | 0 0 0 | 0 1 0 | 0 1 | 1 0

1 | 0 1 1 | 1 1 1 | 1 0

一个示例是,如果你只想要整数的低4位,则将其与15(二进制1111)进行与,则:

201: 1100 1001

AND 15: 0000 1111

------------------

IS 9 0000 1001

在那种情况下,15中的零位有效地充当了过滤器,迫使结果中的位也为零。

另外,>>和<<通常作为按位运算符包括在内,它们分别将值“左”右移和左移一定数量的比特,丢掉将要移向的端点的比特,并在该比特处输入零。另一端。

因此,例如:

1001 0101 >> 2 gives 0010 0101

1111 1111 << 4 gives 1111 0000

请注意,Python中的左移是不寻常的,因为它没有使用固定的宽度来丢弃位-虽然许多语言根据数据类型使用固定的宽度,但是Python只是扩展宽度以迎合额外的位。为了获得Python中的丢弃行为,你可以按位向左移动,and例如在8位值中向左移动四位:

bits8 = (bits8 << 4) & 255

考虑到这一点,位运算符的另一个例子是,如果你有两个4位值要打包成一个8位的一个,你可以使用所有这三个操作员的(left-shift,and和or):

packed_val = ((val1 & 15) << 4) | (val2 & 15)

该& 15操作将确保两个值仅具有低4位。

<< 4是一个4位左移位移动val1进入前的8位值的4位。

在|简单地结合了这两者结合起来。

如果val1为7且val2为4:

val1 val2

==== ====

& 15 (and) xxxx-0111 xxxx-0100 & 15

<< 4 (left) 0111-0000 |

| |

+-------+-------+

|

| (or) 0111-0100

2020-02-12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值