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 - 仅使用一个 printf() 提示输入并打印响应?

java - 矩阵中的最小分割数

algorithm - 给定 5 个数字,求中位数所需的最少比较次数是多少?

c++ - 如何在C++中制作类列表

使用递归回溯的 C++ 数独求解器不起作用

java - 如何使用 jvalue 数组将两个整数传递给构造函数?

c - 系统调用 mktime 忽略 tm_isdst 标志

c++ - clang++/g++/gfortran之间的简单测试用例

javascript - v8:为什么 javascript 中的函数调用比 C++ 中的函数调用更快

algorithm - 通过回溯求解唯一路径的快速算法