【发布时间】:2012-06-15 19:53:31
【问题描述】:
我想计算恰好设置了k 位的最小整数,它大于另一个整数x。
例如如果x = 1001010 那么
对于k=2,答案应该是1010000
对于k=4,答案应该是1001011
对于k=5,答案是1001111
我认为至少需要设置与整数x 中设置的最左侧位一样多的位,然后选择设置与x 中下一个最左侧设置位相邻的 MSB 侧位,或设置下一个最左边的设置位,然后通过重复相同的过程查看设置后面的位;一直在计算 k 中剩下的位数。
我不确定这是否是正确的方法。
【问题讨论】:
-
提供示例输入/输出将使您的问题更容易理解。你的意思是这两个整数应该设置相同的位数吗?
-
@xvatar 我认为
x和k都是程序的输入,即x = 1001010,k = 2会返回1010000 -
答案应该包含精确的 k 位集合,还是至少包含 k 位集合?
-
@xvatar 我意识到我的问题应该更清楚。我已进行了适当的更改。
-
@EitanT 不,这不是家庭作业:-)。这是我在解决面试中被问到的一个相关问题时想到的。
标签: c algorithm integer bit-manipulation