leetcode190顛倒二進位制位

2021-10-01 07:24:40 字數 590 閱讀 8555

因為是位運算的題腦子裡只想了一堆與或、異或什麼的,但是自身和1或者0與或異或好像也沒什麼用,看了題解,位運算不是還有移位的麼…腦子瓦特了,而且其實就是生成乙個新的數,新的二進位制數的第一位就是原有的最後一位,不要看到自身顛倒就只在這乙個數上操作,很蠢啊喂,每次取原始數的最後一位,放在新數的第一位,同時原始資料右移,得到新的最後一位,新數左移

原始資料和新資料就像是相向而行的火車,對應車廂資料相同。

注意:取原始資料最後一位是通過和1做與操作實現的

**如下:

class solution:

# @param n, an integer

# @return an integer

def reversebits(self, n):

result = 0

num = 32

while num:

result <<=1

last = n&1 # n的最後一位

result = result+last

n>>=1

num = num-1

return result

問題:執行輸入的是二進位制數字麼

leetcode190 顛倒二進位制

思想 定義變數ans儲存反轉之後的二進位制數,預設是全0。變數mask是1,若mask與n相與為真,則n的二進位制形式最後一位為1,此時ans需要和1或,使得當前為二進位制為1,反之ans不變即為0。n不斷左移 左移的目的是去除最後一位二進位制數 直到結束。class solution param ...

leetcode 190 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。示例 輸入 43261596輸出 964176192解釋 43261596 的二進位制表示形式為00000010100101000001111010011100,返回 964176192,其二進位制表示形式為001110010111100000101001...

LeetCode190 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。示例 輸入 43261596輸出 964176192解釋 43261596 的二進位制表示形式為00000010100101000001111010011100,返回 964176192,其二進位制表示形式為001110010111100000101001...