1. 程式人生 > >面試題:輸入一個整數,輸出該整數二進位制中1的個數。

面試題:輸入一個整數,輸出該整數二進位制中1的個數。

程式碼: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); }