190 顛倒二進位制位(位運算)(看方法三)

2021-10-02 13:45:48 字數 854 閱讀 8944

方法一:

用移位操作

關鍵操作:

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取反 得到倒數第...