我们给定一个数字,例如num,任务是计算将1加到一个数字后更改的总位数。
数字的二进制表示是通过将给定数字转换为0和1的形式完成的,并且可以通过多种方法来完成。在一种方法中,我们将给定数字的LCM计算为2,如果提醒不是0,则该位设置为1,否则它将设置为0。
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 ( 1 bit carry)
Input − num = 10Output − count is : 1
解释-10的二进制表示形式是1010,当添加1时,表示形式变为1011。显然只有一位被更改,因此计数为1。
Input − num = 5Output − count is : 2
解释-5的二进制表示形式为101,当添加1时,表示形式变为110。显然两位被更改,因此计数为2
输入整数类型的数量,假设为int num
声明一个变量来存储计数,比如说int count
拿另一个变量,比如说temp,它将计算num的XOR并将其设置为n ^(n + 1)
在count变量中,调用__builtin_popcount(temp)。此函数用于计算给定整数二进制表示形式中的数字计数。它是GCC编译器的内置函数。
返回计数
打印结果。
#include <iostream> using namespace std; //查找更改位数的功能 int changedbit(int n){ int XOR = n ^ (n + 1); //计算异或值中的设置位 int count = __builtin_popcount(XOR); return count; } int main(){ int n = 10; cout <<"count is: " <<changedbit(n); return 0; }
输出结果
如果运行上面的代码,我们将获得以下输出-
count is: 1