我们给定一个整数,即num,任务是首先计算一个数字的二进制数字,然后计算一个数字的总未设置位。
二进制数中的未设置位用0表示。每当我们计算一个整数值的二进制数时,它就会形成为0和1的组合。因此,数字0在计算机方面称为未设置位。
输入-整数= 50
输出-总数中未设置的总位数为-3
说明-数字50的二进制表示为110010,如果我们以8位数字计算,则将在开头附加两个0。因此,一个数字中未设置的总位数为3。
输入-整数= 10
输出-数字中未设置的总位数的计数是:6
说明-数字10的二进制表示形式是00001010,如果我们以8位数字进行计算,则将在开头添加四个0。因此,一个数字中的总未设置位为6。
在整数类型的变量中输入数字
声明一个变量计数以存储unsigned int类型的置位总数
从i到1 << 7并且i> 0和i到i / 2的启动循环
在循环中,检查num&1 == TRUE,然后打印1,否则打印0
在循环内,增加数字中总位数的值。
启动循环,同时计算位数不为0的总位数
在循环内,设置count = count + number&1,还设置number >> = 1
将计数设置为数字中的总位数-数字中的总置位位数。
打印计数
#include<iostream>
using namespace std;
//计算数字中未设置的总位数
unsigned int unset_bits(unsigned int number){
unsigned int total_digits = 0;
unsigned int count = 0;
unsigned i;
//显示总的8位数字
cout<<"8-bit digits of "<<number<<" is: ";
for (i = 1 << 7; i > 0; i = i / 2){
(number & i)? cout<<"1": cout<<"0";
total_digits++;
}
//计算数字中未设置的总位数
while (number){
count += number & 1;
number >>= 1;
}
count = total_digits - count;
cout<<"\nCount of total unset bits in a number are: "<<count;
}
int main(){
int number = 50;
unset_bits(number);
return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
8-bit digits of 50 is: 00110010 Count of total set bits in a number are: 5