python按位或怎么按_python – 按位操作和用法

按位运算符是处理多位值的运算符,但在概念上一次一个位。

> AND仅在其两个输入均为1时为1,否则为0。

>如果其中一个或两个输入为1,则OR为1,否则为0。

>只有当其中一个输入为1时,XOR为1,否则为0。

> NOT只有在其输入为0时为1,否则为0。

这些通常可以最好地显示为真值表。输入可能性在顶部和左侧,结果位是在输入的交叉处显示的四个值中的一个(在NOT的情况下为两个,因为它仅具有一个输入)值。

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中的丢弃行为,你可以跟随左移位与逐位,例如在8位值向左移位四位:

bits8 = (bits8 << 4) & 255

考虑到这一点,位运算符的另一个例子是,如果你有两个4位的值要包装到一个8位的值,你可以使用所有三个运算符(左移,和或):

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值