Python计数设置范围内的位?
给定的正数转换为二进制数时,具有一定的置位位数。二进制数中的设置位用1表示。在本文中,我们将看到如何在给定数字中将其转换为二进制值后获取其设置位的数量。
使用bin和切片
在下面的示例中,我们采用一个数字并应用bin函数来获取二进制值。然后,我们将其切片以删除添加到二进制数的前缀,然后应用range函数获得setbit的coutn。
例子
def SetBits_cnt(n, l, r): bin_val = bin(n) # Remove '0b' prefixed in bin_val conversion bin_val = bin_val[2:] print(bin_val) #反向串 bin_val = bin_val[-1::-1] # count all set bit '1' starting from index l-1 print(len([bin_val[i] for i in range(l - 1, r) if bin_val[i] == '1'])) SetBits_cnt(83,1,6)
输出
运行上面的代码给我们以下结果-
1010011 3
按位使用
按位运算符也可用于获取设置位。在下面的示例中,我们首先应用按位运算符,将范围考虑在内,然后将其传递给仅计算设置位的另一个函数。
例子
def trackBitsInRange(n, l, r):
#使用按位运算符
bit_num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1)
#按位运算后,对设置的位进行计数
return trackSetBits(n & bit_num)
def trackSetBits(n):
count = 0
while (n):
n &= (n - 1)
count = count + 1
return count
print(trackBitsInRange(83,1,6))输出
运行上面的代码给我们以下结果-
3
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短