#27573: C++ 一行解


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [140.114.253.77]
最後登入時間 :
2024-11-13 14:54:03
a414. 位元運算之進位篇 -- c910335 | From: [111.243.21.75] | 發表日期 : 2021-10-16 10:53

算要進位幾次就是數二進位中後面有幾個1,而"__builtin_ctz"這個function會回傳一個整數在二進位中後面有幾個0

所以我們只要把n的所有0和1顛倒,然後數後面有幾個0就可以了

顛倒n在二進位的0和1可以用 "~" 符號

while(cin >> n && n) 

cout << __builtin_ctz(~n) << "\n";

 
ZeroJudge Forum