c++ - 最小整数,但大于给定整数,并且包含相同的设置位数(2个整数具有相同的设置位数)。

标签 c++ c algorithm bit digital

在C++或C语言中,我有一个问题在标题上解释。我的解决方案是使用异或。
例如,
给定整数为5,
我一个一个地递增到这个整数。每一个增量都会产生5的异或。
如果异或结果包含偶数个设置位,则应为例外结果。
但是,我们如何在不逐个移位的情况下确定异或后的“偶数位”?
让我们考虑一下解决办法。
不要在任何循环中对二进制序列使用移位算法。
首选语言是C++但这是算法,所以什么语言不重要。

最佳答案

有趣的问题。
我得到的是:

int n = 235;
int ans = n | (~n & ~(~n - 1));
printf("Answer is %d\n", ans);

输出239

关于c++ - 最小整数,但大于给定整数,并且包含相同的设置位数(2个整数具有相同的设置位数)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58421287/

相关文章:

c++ - 为什么 std::move 返回的对象不立即销毁

c++ - 用于生成 pybind11 绑定(bind)的模板元函数

iphone - NSinteger 的地址通过递增来改变

arrays - 使用给定的数组创建一个未排序的堆(从左到右)

arrays - 在二维数组中寻找鞍点的算法

c++ - 如何安装ConvNet库?

c++ - 初始化嵌套模板类

c - struct中 "typedef"是什么意思

c - 得到 "error: expected identifier or ' ('"

algorithm - 计算带周期的随机迷宫行走的概率