題目:寫一個函數返回參數二進制中 1 的個數
方法1:
我自己寫的,運用'%'和'/',感覺挺簡單的。
int count_one_bit(int num)
{
unsigned int count=0;
while(num)
{
if(num%2==1)
count++;
num=num/2;
}
return count;
}
int main()
{
int n = 0;
int count = 0;
scanf("%d", &n);
count = count_one_bit(n);
printf("%d\n", count);
system("pause");
return 0;
}
方法2:
運用移位'>>',我還不太熟悉運用移位操作符,以後得加強練習。
int count_one_bit(int num)
{
int count = 0;
int i = 32;
while (i--)
{
if (num & 1 == 1)
count++;
num = num >> 1;
}
return count;
}
方法3:
運用'&'和移位,這個真的不易想到,我想得數學好才能想到吧!怪我數學不好,得加強算法學習,多接觸,積累經驗。
int count_one_bit(int num)
{
int count = 0;
while (num)
{
count++;
num = num & (num - 1);
}
return count;
}
總結: 初入'C',感覺寫代碼好具有邏輯性呀!好奇妙的感覺!剛剛百度了一下,上面陳述了好多種方法,但真的太弱了,有些竟然連看都還看不懂,好憂傷!慢慢來吧!
已經選擇了,決定了走程序員這條路,就不要抱怨,不要再偷懶,不要找各種借口和理由放縱自己,遠離電影,少靠近床,踏踏實實努力學習一年!
我一直相信:努力了不一定會成功,但不努力一定不會成功!無論最後結果如何,但只有現在努力了,以後,我才不會怨恨自己,不會悔恨,心裡也是美好的。