检查正整数是否为2的幂的最短方法
shortest way to check if a positive integer is a power of two
这个问题来自工作面试
使用此模板编写一个C++函数,用于检查正整数是否为2的幂。
bool p(int n)
{
return ********;
}
您必须将8个"*"符号替换为其他符号,才能使功能正常工作
我最好的方法是:
bool p(int n)
{
return !(n&=n-1);
}
不幸的是,这是错误的,因为这里有9个符号
有什么想法吗?
为什么分配给n
?只要去掉=
,就少了一个字符。它将创建一个临时的,相反,逻辑不会改变。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 让bool方法返回其他整数
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 将一系列整数放入类的最佳方法是什么?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 有没有更好的方法对C++中的三个整数进行排序?
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 在C++中,将无符号整数转换为八进制表示,反之亦然的最佳方法是什么
- C++:这是使用整数变量作为函数调用指针的正确方法吗
- 计算将整数n分解为4平方和的方法的数量
- 计算机使用什么方法添加无符号整数
- 基于整数向量执行位排列的有效方法?
- 快速方法可以将整数乘以适当的分数,而无需浮点或溢出
- 为大无符号整数分配内存的有效方法
- 在模型中保存整数的方法,与QStyledItemDelegate兼容
- 将整数输入数组的方法比 scanf() 或 cin 更快?
- 如何将枚举传递给方法而不将其作为整数传递
- 获取两个无符号整数 C++ 乘积的高 32 位的有效方法