程序如下:
n=11
count = 0
while (n > 0):
count+=1
print(count,(n - 1) , n)
n = (n - 1) & n
print(count)
求一个整数的二进制数里有几个1
运行结果:1 10 11
2 9 10
3 7 8
3
分析:11--1011
10--1010
9--1001
8--1000
7--0111
10 & 11 1010 & 1011=1010 (1010的十进制值为10)
9 & 10 1001 & 1010=1000 (1000的十进制值是8)
7 & 8 0111 & 1000=0000 (0000的十进制值是0)
至此跳出n不大于0,程序跳出while循环.
所以11(二进制1011表示),中有3个1
| 留言与评论(共有 0 条评论) |