---
# System prepended metadata

title: \#190 Reverse Bits
tags: [leetcode, leetcode-easy]

---

# \#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`