python实现:求一个整数中的二进制1的个数的两种实现方法

来源:互联网 发布:广电网络面临的竞争 编辑:程序博客网 时间:2024/06/06 04:09
import timeimport datetimeprint time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())print datetime.datetime.now()countx = 0x = 9999while x:    countx += 1    x &= x - 1    print "x= %d, countx=%d" % (x, countx),    print '{0:b}'.format(x)print datetime.datetime.now()print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())print "result: %d" % countxprint time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())print datetime.datetime.now()count = 0x = 9999while x > 0:    if x % 2 != 0:        count += 1    x /= 2    print "x= %d, count= %d" % (x, count),    print '{0:b}'.format(x)print datetime.datetime.now()print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())print "resule = %d" % count

#algorithm1
2017-08-10 09:31:45
2017-08-10 09:31:45.593000
x= 9999, countx=0 10011100001111
x= 9998, countx=1 10011100001110
x= 9996, countx=2 10011100001100
x= 9992, countx=3 10011100001000
x= 9984, countx=4 10011100000000
x= 9728, countx=5 10011000000000
x= 9216, countx=6 10010000000000
x= 8192, countx=7 10000000000000
2017-08-10 09:31:45.686000
2017-08-10 09:31:45
result: 8


#algorithm2
2017-08-10 09:31:45
2017-08-10 09:31:45.717000
x= 9999, count= 1 10011100001111
x= 4999, count= 2 1001110000111
x= 2499, count= 3 100111000011
x= 1249, count= 4 10011100001
x= 624, count= 4 1001110000
x= 312, count= 4 100111000
x= 156, count= 4 10011100
x= 78, count= 4 1001110
x= 39, count= 5 100111
x= 19, count= 6 10011
x= 9, count= 7 1001
x= 4, count= 7 100
x= 2, count= 7 10
x= 1, count= 8 1
2017-08-10 09:31:45.795000
2017-08-10 09:31:45
resule = 8

原创粉丝点击