在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/