給定一個數字,求其對應的二進制的1的個數,比如:9,對應的二進制的個數是1001,則對應的1的個數為2個。
面試復習,一個多月了,從看網易公開課《編程范式》,然後稍微翻翻了《premier c++》,接著看了嚴蔚敏的數據結構,說實話 ,不怎麼的,看到最後幾章,實在看不下去,就換《算法導論》了,寫了20篇關於數據結構和算法的博客,算是學習筆記吧。每天早上堅持看看csdn上的博客,學到不少東西。接下來打算看看《編程之美》,練練所學的知識,7月份左右看完吧,最後正式校招之前,再看看《面試寶典》。算是准備了一下吧。由於基礎很薄弱,還是很費勁的,繼續加油。
言歸正傳,這道題好像《編程之美》和《面試寶典》上都有,著實是一道有趣的題目。
比如數據x,只要不斷x&(x-1)知道x為0就可以了。
代碼:
#include<iostream> using namespace std; int func(int x) { int count=0; while(x) { count++; x=x&(x-1); } return count; } int main() { cout<<func(99); return 0; }