【发布时间】: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,这是错误的答案。
我该怎么做?
【问题讨论】:
标签: java python bit-manipulation