2017年2月27日 星期一經(jīng)歷了一個渾渾噩噩的周末,終于到了星期一。昨天還去了中國美術(shù)學(xué)院(象山校區(qū)),可以說是被藝術(shù)的氛圍熏陶了一下!去過的藝術(shù)院校里,四川美術(shù)學(xué)院給我的感覺,既有過往的建筑風(fēng)格,又有很現(xiàn)代的建筑,大家都不拘泥于形式;而中國美術(shù)學(xué)院,十分學(xué)術(shù)派,可以說把中國古代的結(jié)構(gòu)、工藝發(fā)揮的淋漓盡致。很羨慕他們能在這樣的地方學(xué)習(xí)!
好啦,開始今天的題目:
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary rePResentation.Note:The given integer is guaranteed to fit within the range of a 32-bit signed integer.You could assume no leading zero bit in the integer’s binary representation.
------------------------------------------------------------我是分割線------------------------------------------------------------------
由題目可知:對一個數(shù)二進(jìn)制取反,輸出取反后的整數(shù)。同樣可以通過位運算的方式計算。
在存儲過程中,一個整數(shù)前面可能會有n個0,不能直接通過~取反。所以方案就是從左到右找到的第一位1,開始與1異或
代碼如下:
class Solution {public: int findComplement(int num) { bool start = false; for (int i = 31; i >= 0; --i) { if (num & (1 << i)) start = true; if (start) num ^= (1 << i); } return num; }};
新聞熱點
疑難解答