可能重复:
查找 1 或 0 的连续位串
是否可以从左数连续的 1 整数?所以:从最高位开始的连续设置位的总数。
仅使用:
! ~ & ^ | + << >>
-1
=0xFFFFFFFF
将返回 32
0xFFF0F0F0
将返回 12 (FFF = 111111111111)
不幸的是,没有循环。
可以假设机器:
使用 2s 补码,32 位整数表示。
以算术方式执行右移。
将整数移动超过字长时具有不可预测的行为。
我被禁止:
使用任何控制结构,例如 if、do、while、for、switch 等。
定义或使用任何宏。
在此文件中定义任何附加函数。
调用任何函数。
使用任何其他操作,例如 &&、||、- 或 ?:
使用任何形式的铸造。
使用除 int 以外的任何数据类型。这意味着您不能使用数组、结构或联合。
我看过 寻找 1 或 0 的连续位串 它正在使用循环,我不能使用。我什至不知道从哪里开始。
(是的,这是一项任务,但我只是向你们中那些足够熟练的人寻求帮助。我已经完成了几乎所有我需要做的事情,但这一个根本行不通。)
(对于那些仅仅因为它是为了学校而投反对票的人:常见问题解答:1 一个特定的编程问题,请检查 2 但是,如果您的动机是“我希望其他人向我解释 ______”,那么您可能没问题。)