反轉二進位制數

2021-06-29 06:01:46 字數 656 閱讀 4449

reverse bits of a given 32 bits unsigned integer.

for example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).

follow up:

if this function is called many times, how would you optimize it?

首先,自己定乙個比較小的數分析,比如a=10100,反轉成b=00101;

那麼,想到通過位運算。a右移,移出的最右邊的那一位要放在b中左移,那麼一步步進行下來,b就是a的反轉;

程式設計時注意邏輯順序,第一次我就把b的先左移,後加考慮反了(這也是初始時候的邊界檢測),下面是**:

class solution 

return rn;

}};

二進位制運算的還有很多,比如:「一串數只有1個出現一次,其餘都出現兩次,找出這個數;」,「一串數有2個出現1次,其他都出現兩次,找出這兩個數」;

這些都借鑑了異或運算的特點。

二進位制數反轉

1 使用了歸併排序的思路 最快 但是時間複雜度比歸併排序要小,每行 都相當於完成了一次歸併 include unsigned revbit unsigned x void main 2 把乙個32位整數按位反轉,即第1位轉到第32位,第2位轉到第31位,依次下去。一牛人寫的演算法如下 unsigne...

二進位制數反轉

1 使用了歸併排序的思路 最快 但是時間複雜度比歸併排序要小,每行 都相當於完成了一次歸併 include unsigned revbit unsigned x void main 2 把乙個32位整數按位反轉,即第1位轉到第32位,第2位轉到第31位,依次下去。一牛人寫的演算法如下 unsigne...

二進位制反轉

方法一 利用二進位制數轉化為十進位制數的計算規則來編寫,如下 include include includeunsigned int reverse bit int num return sum int main 這裡的 num i 1意思是依次取這個數二進位制位模式下的最右面的那一位數,一共取32...