【发布时间】:2019-05-29 10:56:00
【问题描述】:
如何在一行代码中找出一个数字的最左位和最右位?
好吧,我们可以遍历一个循环以通过左移找出最左边的设置位,但是如何在一行中执行此操作以使另一个否。设置了谁的最左边位/最右边位? 像 y = x & ~(x-1) 会找到最左边的位,但我没有得到这个怎么办?
谁能给出 C++ 的代码并解释一下?
【问题讨论】:
-
1) 你没有用语言标记;有许多语言带有非语义换行符,所以 any 程序可以是微不足道的单行程序。 2)你为什么需要这个?这是一场高尔夫(尽可能短的代码编写的难题挑战),还是其他一些要求?它是否需要快速,或者只是没有换行符? 3)你有没有尝试过什么?你研究过吗?
-
找到最左/最右位是什么意思?返回仅设置此位的值?还是返回这个位的索引?
-
4) 一些编程语言具有内置函数或库函数,可以满足您的需求。例如,在 Ruby 中,
x.bit_length - 1将为您提供最高设置位的索引。 5)通过将数字转换为二进制表示(许多语言本身支持),然后使用index、rindex和len之类的字符串函数来找到它们(尽管它是不是最高效的方式)。