Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 检查是否只有一个';1';以十进制数的二进制表示形式存在_Python 3.x - Fatal编程技术网

Python 3.x 检查是否只有一个';1';以十进制数的二进制表示形式存在

Python 3.x 检查是否只有一个';1';以十进制数的二进制表示形式存在,python-3.x,Python 3.x,在不使用特殊函数(数学、numpy等)的情况下,检查十进制数的二进制表示形式中是否只有一个“1”最有效(从速度和空间角度)的方法是什么 e、 g.1为“001”,4为“100” 我试过这个 binary = "{0:b}".format(value) if binary.count('1') != 1: return 1 else: return 0 我相信这是空间上的O(logn)和速度上的O(n)?有没有更有效的方法可以做到这一点?其中一种方法是- binary_num

在不使用特殊函数(数学、numpy等)的情况下,检查十进制数的二进制表示形式中是否只有一个“1”最有效(从速度和空间角度)的方法是什么

e、 g.1为“001”,4为“100”

我试过这个

binary  =  "{0:b}".format(value)
if binary.count('1') != 1:
    return 1
else:
    return 0

我相信这是空间上的O(logn)和速度上的O(n)?有没有更有效的方法可以做到这一点?

其中一种方法是-

binary_num = '00101010'
result = [1 for x in binary_num if x == '1']
if len(result) == 1:
    print('Success')
else:
    print('Failed')

你说的只是整数还是浮点数?只是整数值可能是
math.log2(value).is\u integer()
,顺便说一下,那实际上不是一个“十进制数”。调用
str
会产生一个十进制字符串,但int在语义上只表示一个没有基数的数字,内部表示是二进制的。
math.log2
由于使用浮点而失去精度,因此它会对接近2的大幂的整数产生误报。