# \#190 Reverse Bits ## *把unsigned int位元反轉* ## Log - build 20210417 by syhuang ## 一般解法(位元操作) - n從最右bit開始, 每次取一bit存到result, 然後result左移一bit, 如此迴圈跑完32bit後就取得反轉後的n,回傳result之前記得轉為unsigned(預設是signed) ```javascript= var reverseBits = function(n) { //從n的最右邊bit開始取並存到result, 每次取就捨棄最右邊的bit, 如此迴圈最終可獲得bit反轉後的n var result = 0; for(var i=0; i<31; i++){ result += (n & 1);//取最右邊的bit result <<= 1;//往左移一bit n >>= 1;//捨棄已取得的最右邊bit } result += (n & 1);//最後一bit result >>>= 0;//轉換為unsigned return result; }; ``` ## 初見 - 10進位轉2進位再轉字串後, 反轉再轉回10進位 ```javascript= var reverseBits = function(n) { var result; result = n.toString(2).split('').reverse(); //補滿32bit for(var i=result.length; i<32; i++){ result.push('0'); } result = parseInt(result.join(''),2); return result; }; ``` ## 備註 - 初見:練習javascript toString()/陣列/數字等之間互轉方法 - 一般解法:練習javascript的bit運算元 ## 參考 ###### tags: `leetcode`, `leetcode-easy`