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...