我想知道如何将以下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:&amp;:'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,这是错误的答案。
我该怎么做?
答案 0 :(得分:2)
相同的代码适用于Python:
if constexpr(std::is_same<Method, UseCPU>()::value)