1樓:
關鍵是要理解 x = x & (x-1)這條語句。一眼看不出來的話,可以舉個實際的例子。
因為與運算子&是個二進位制的運算子號,所以首先把十進位制的數轉成二進位制,在考慮。
舉個例子:x = 10,二進位制形式為 1010;
那麼 1010
& 1001
__________
1000
再舉個例子,x的二進位制形式為10010110
那麼10010110
& 10010101
_____________
10010100
發現x&(x-1)操作的結果,就是導致x的二進位制形式中的1減少了一位。其實原因很簡單,x-1總是從x中借走一個最低位的1,因此&操作的結果就導致最低位1丟失。
明白了這一點,就不難看出函式func()其實就是計算 x 的二進位制表示中1的個數。
比如:計算fun(9999)
因為 9999 = 8192 + 1024 + 512 + 256 + 15
所以1的個數就是: 1 + 1 + 1 + 1 + 4 = 8(個)
2樓:黑洞之謎
好好看了一下,發現這個函式是用來測試輸入數字中二進位制表示方式中'1'的個數的程式,演算法設計的確巧妙,你可以試試!
高分救助:幫我答幾道c語言題
跪求c++題目答案。。。。 輸入一個正整數n,計算並輸出下面算式的值。要求定義和呼叫函式total(n),
3樓:匿名使用者
double total(int n)
void main()
求c++面試題及答案
4樓:匿名使用者
程式設計師面試寶典 第2版 ,關於c/c++的。
我有電子版,給我郵箱好傳給你
5樓:匿名使用者
6樓:匡金後方
自己在網上一搜就出來了。因為c/c++的面試題是非常多的。
7樓:刁姝環曼文
我是在這上面看的。c++面試題
C語言程式設計題 編寫函式,用於求兩個數中的較小數用主函式
int min int a,int b return a 如下 include int comp int a,int b int main void 用c語言編寫 編寫一個函式,要求在主函式中輸入兩個數,輸出其中最大值。比較兩個數的大小可以使用三目運算子 三目運算子 表示式1 表示式2 表示式3 其...
C語言題,求大神解答,c語言的題,求大神解答
include int main for i 0 iprintf d az i printf n for i 0 iprintf d af i printf n return 0 c語言的題,求大神解答 解 1 a項錯誤 有些不可見字元可放入緩衝區,例如 回車 空格。b項錯誤 有些輸入函式有緩衝區,...
求這題的解析。第8題,第8題,求解析
媽媽每年都做蛋糕 蛋糕被製作 被動時態 be made 複數 所以are made 蛋糕是被製作,所以用被動語態,又因為是複數,所以用are made 被動語態 passive voice 是動詞的一種形式,用以說明主語與謂語動詞之間的關係。英語的語態共有兩種 主動語態和被動語態。主動語態表示主語是...