面試題:輸入一個整數,輸出該整數二進位制中1的個數。
阿新 • • 發佈:2019-02-02
程式碼:C語言
//輸入一個整數,輸出該整數二進位制中1的個數。其中負數用補碼錶示。
//左移運算子是用來將一個數的各二進位制位全部左移若干位。相當於乘法運算,表示為"<<"
//右移運算子是用來將一個數的各二進位制位全部右移若干位。相當於除法運算,表示為">>"
#include<stdio.h>
//整數與數字“1”進行與運算(&)。低位到高位迴圈,與運算,左進一位。
int CalOne1(int n)
{
int count=0;
while(n)
{
if((n & 1)==1) ++count ;
n=n>>1;
}
return count;
}
//將一個書減去1,在與原數做與運算,就可以把原數二進位制表示中最右邊的一個1變成0
//這個數的二進位制中有多少個1就可以進行多少次這樣的運算。
int CalOne2(int n)
{
int count=0;
while(n)
{
++count;
n=(n-1)&n;
}
return count;
}
int main()
{
int one ;
int n;
scanf("%d",&n);
one=CalOne2(n);
printf("%d" ,one);
}