題目連接:https://leetcode.com/problems/reverse-bits/description/eclipse
題目大意:將數值的二進制反轉。ide
法一(借鑑):因爲是無符號32位整型,當二進制反轉後會獲得一個32位的整型,eclipse中已經沒法正常顯示了,可是轉爲二進制仍是正確的。至於爲何我也不知道。代碼以下(耗時2ms):spa
1 public int reverseBits(int n) { 2 int res = 0; 3 for(int i = 0; i <= 31; i++) { 4 //1010->tmp=0,n=101,res=00, 5 int tmp = n & 1;//取最後一位 6 n = n >> 1;//右移 7 res = res<<1;//結果左移一位 8 res = res | tmp;//將最後一位加到結果左移的那個位上去,也就是最低位上 9 } 10 // System.out.println(Integer.toBinaryString(res)); 11 //在eclipse裏會顯示錯誤,由於res已經移位造成了32位的數,已經沒法正常顯示了 12 //可是當轉爲二進制的時候是正常的 13 return res; 14 }
其餘的解法:http://blog.csdn.net/feliciafay/article/details/44536827.net