最有效的方法来检查十进制数字的二进制表示中是否只有一个'1'[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最有效的方法来检查十进制数字的二进制表示中是否只有一个'1'[重复]相关的知识,希望对你有一定的参考价值。

此问题已经在这里有了答案:

在不使用特殊功能(数学,numpy等)的情况下,检查十进制数字的二进制表示形式中是否只有单个“ 1”是最有效的方式(在速度和空间方面?)]

例如1是'001',4是'100'。

我已经尝试过]

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

我相信这在空间上是O(log n),在速度上是O(n)?有没有一种方法可以更有效地做到这一点?

最有效(在速度和空间方面)的方法来检查十进制数是否在其二进制表示中仅具有单个'1'而不使用特殊功能(数学,numpy等)?例如...

答案

其中一种方法可以是-

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

以上是关于最有效的方法来检查十进制数字的二进制表示中是否只有一个'1'[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是是十六进制数的有效表示

C中二进制表示的基数排序算法

如何检查字符串是不是是有效的十六进制颜色表示?

基本数据类型---数字

如何在C中检查十六进制数(%x)是否以某个数字开头?

P1582 倒水