劍指offer刷題記錄 位運算

2021-10-02 21:44:52 字數 351 閱讀 5253

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。

由於數字在計算機中儲存的形式就是二進位制,因此可以直接將數字與1相與來判斷二進位制形式下最低位是否為1,然後右移數字繼續判斷直到數字為0即可。

但是還要考慮負數形式,由於負數在儲存時,最高位有一符號位,在右移過程中最高位會不斷補1,所以會進入死迴圈。因此我們可以將任何負數與7fffffff相與,這樣子就可以去除掉最高位的1,使負數轉換為正數,然後在計數器上多加一次1即可。

class

solution

while

(n!=0)

return count;}}

;

劍指 offer 刷題記錄

任誰都躲不過找工作的問題,好希望能多準備一些時間,奈何時間不等人,每天刷幾道題,並且記錄下來吧 def replacespace s write code here num space 0 new s for i in range len s if i num space 1 for i in ra...

劍指offer刷題記錄

遞迴法 鍊錶的後續遍歷,並用self.k來記錄倒數節點的位置,找到了就返回找到的節點,否則返回none coding utf 8 class listnode def init self,x self.val x self.next none class solution def init self...

劍指offer刷題記錄 綜合

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 做這個題目做的真的很煩,最麻煩的就是判斷當前是否越界。可儲存的最大的正數末位為7,可儲存...