【发布时间】:2017-08-03 17:34:32
【问题描述】:
我需要编写一个函数来检查某个值是否连续,例如 0b0011100、0b001111111 或 0b100000000 是可以的(返回不是 0),但 0b00110010 和 0b001010 不是(所有的都应该是连续的)。
但这是我需要做的没有任何循环的问题。
我正在使用一些不允许使用循环的疯狂 API,我只有以下算术函数:
+、-、*、|、||、&、&&、~、!、TZC、POPCNT、>
分别是:
加、减、乘、按位或、逻辑或、按位与、逻辑与、按位非、逻辑非、尾随零计数器(计数从 LSB 到前 1 的零)、弹出计数器(计数个),左移和右移。
所有值都是 64 位长度。
【问题讨论】:
-
这是什么“疯狂的 API”?乍一看,这看起来像是家庭作业。
-
到目前为止你尝试过什么?与我们分享您的想法。
-
我投票决定将此问题作为离题结束,因为提问者没有任何努力解决问题的迹象。
-
您是否阅读过大量有关位旋转、位黑客、位技巧的页面?
-
如果不允许使用循环,请尝试递归 ????
标签: algorithm math 64-bit arithmetic-expressions