因為是位運算的題腦子裡只想了一堆與或、異或什麼的,但是自身和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...