通过0清除python位索引
Posted
技术标签:
【中文标题】通过0清除python位索引【英文标题】:Clearing python bits index through 0 【发布时间】:2017-08-09 10:09:53 【问题描述】:我想知道如何将以下 Java 代码实现到其 Python 等效项中。
在 Java 中,我使用一个数字并使用按位运算符清除从某个索引到第 0 个索引(包括)的位
int clearBitsIthrough0(int num, int i)
int mask = (-1 << (i + 1));
return num & mask;
我对等效 python 代码的尝试如下
def clearBitsIThrough0(num, i):
mask = format(0xf << 4, 'b')
return num & mask
但是,我得到了一个
TypeError: &: 'int' 和 'str' 的操作数类型不受支持
我知道会发生这种情况,因为 mask 在这里是一个字符串,但是如果我将它转换为一个 int,我会丢失底层的整数值,我仍然会得到错误的结果。
我尝试了一种不同的方式来做以下
def clearBitsIThrough0(num, i):
mask = int(format(0xf << 4, 'b'), 2)
num = int(format(num, 'b'), 2)
print(num, mask)
return num & mask
但这会返回 0,这是错误的答案。
我该怎么做?
【问题讨论】:
【参考方案1】:相同的代码在 Python 中也可以工作:
def clearBitsIThrough0(num, i):
mask = (-1 << (i + 1))
return num & mask
【讨论】:
自己试过了。我只是愚蠢地不去尝试。我没有尝试它,因为我认为因为 Python 中的 -1 不表示为 1111(它在 Java 中),所以这是行不通的。我应该删除这个问题吗,因为它似乎没有任何用途? 展示高级 Python 也可以让你做低级的 bitstuff 是有价值的!以上是关于通过0清除python位索引的主要内容,如果未能解决你的问题,请参考以下文章