方法一:
用移位操作
關鍵操作:
res = res | n&1;//將 n 的 最低位插入到res的最右端
public
class
solution
return res;
}}
方法二:
通過不斷左右互換完成顛倒;
互換32位的高低16,
互換每個16位的高低8位
互換每個8位的高低4位
互換每個4位的高低2位
互換每個2位的高低1位
注意點:
對輸入值看作無符號整數
所以右移要用 >>> 無符號右移
左移操作 無符號和有符號一樣 所以沒有 《無符號左移操作
左移直接用<<
public
class
solution
}
方法三:
private
static map
cache =
newhashmap
<
>()
;public
intreversebits
(int n)
return ret;
}private
intreversebyte
(byte b)
cache.
put(b, ret)
;return ret;
}
190 顛倒二進位制位
題目描述 顛倒給定的 32 位無符號整數的二進位制位。示例 1 輸入 00000010100101000001111010011100 輸出 00111001011110000010100101000000 解釋 輸入的二進位制串 00000010100101000001111010011100 表...
190顛倒二進位制位(位運算 分治思想)
1 題目描述 顛倒給定的 32 位無符號整數的二進位制位。2 示例 輸入 00000010100101000001111010011100 輸出 00111001011110000010100101000000 解釋 輸入的二進位制串 00000010100101000001111010011100...
位運算 顛倒二進位制位
a代表某字串 a b 異或 相同為0,不同為1 若b是一串0,則a b a,a b 0 a a 0 若b是一串1,則a b a,相當於把a取反,a b a a a a 利用x x 0,可以將三個數中重複的兩個數去掉 n 相當於無符號右移,左邊會補上0 獲取11111111,只需要把0取反 得到倒數第...