【发布时间】:2021-09-14 14:26:50
【问题描述】:
是否有任何小技巧可以检查一个数字是否可以表示为 2 的 x 次方之和? 例如:x=3 n=21 数字是 16,4,1 如果 n=30 它应该是假的,因为没有 3 的 2 的幂来表示 30
【问题讨论】:
-
如果 2 的所有次方都必须不同,则 n 是 2 的 x 次方之和,当且仅当 n 的二进制展开中有 x 个设置位。
-
如果它们不必不同怎么办?
-
您的问题似乎是关于数学而不是编程;您可能会在数学网站而不是编程网站上得到更好的答案。我认为我的评论可以更进一步:如果二进制扩展或 n 中有超过 x 个设置位,则 n 不能表示为 x 次方或 2 的总和,即使它们被允许相同。另一方面,如果例如 n = 9 = 2^3 + 2^0(两个设置位),我们可以根据需要将其写为 2^2 + 2^2 + 2^0。祝你好运。
-
谢谢,在一些实验之后真的有帮助未设置,因为您始终可以根据需要添加 2^0
标签: math binary bit-manipulation