1、題目描述
顛倒給定的 32 位無符號整數的二進位制位。
2、示例
輸入: 00000010100101000001111010011100
輸出: 00111001011110000010100101000000
解釋: 輸入的二進位制串 00000010100101000001111010011100 表示無符號整數 43261596,
因此返回 964176192,其二進位制表示形式為 00111001011110000010100101000000。
3、題解
解法一:
基本思想:位運算+分治思想,將32位分為高低交換,對半重複操作,不斷重複,直至相鄰每一位互換,面試可能問到,要求不使用迴圈實現,時間複雜度o(1)空間複雜度o(1)
解法二:
基本思想:位運算,時間複雜度o(32)空間複雜度o(1)
#include#include#include#include#includeusing namespace std;
class solution
};class solution1
return res;
}};int main()
190 顛倒二進位制位
題目描述 顛倒給定的 32 位無符號整數的二進位制位。示例 1 輸入 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取反 得到倒數第...
190 顛倒二進位制位(位運算)(看方法三)
方法一 用移位操作 關鍵操作 res res n 1 將 n 的 最低位插入到res的最右端 public class solution return res 方法二 通過不斷左右互換完成顛倒 互換32位的高低16,互換每個16位的高低8位 互換每個8位的高低4位 互換每個4位的高低2位 互換每個2...