1. 程式人生 > >獲取二進位制數中某一位的值

獲取二進位制數中某一位的值

題目描述

獲取數字 num 二進位制形式第 bit 位的值。注意:
1、bit 從 1 開始
2、返回 0 或 1
3、舉例:2 的二進位制為 10,第 1 位為 0,第 2 位為 1

示例1

輸入

複製

128, 8

輸出

複製

1

我的解答:

function valueAtBit(num, bit) {
    var str=num.toString(2);
    return str[str.length-bit];

 }

利用toString()函式,將數字轉化為了二進位制字串,然後字串長度和位的關係將其取出

其他解答:

function valueAtBit(num, bit) {

return (num >> (bit -1)) & 1;

}

利用了移位操作,之前沒有接觸過這種解法,理解之後感覺相當簡潔

以上面的示例分析,128,8-》1;

128->1000 0000;要想將第八位上的數字取出,可以將她移到第一位上,也即是向右移動7位變成0000 0001,怎樣將第一位上的1拿出來呢,可以利用與操作,讓0000 0001,與1(0000 0001)與,除了第一位上的數是它本身,其餘位全部變成了0,這樣就將第一位取了出來。

自己可以寫個二進位制數字分析下,如:1000 0000 第八位是1,要想將他移到第一位上,移動的就是bit-1位,之後讓它和1與,這樣就能將除了第一位之外的其他位上的數字置0,輸出的就只有第一位上的數字,也即是我們需要的那個