在C ++中将给定N加1后更改的位数计数
我们给定一个数字,例如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
以下程序中使用的方法如下
输入整数类型的数量,假设为intnum
声明一个变量来存储计数,比如说intcount
拿另一个变量,比如说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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短