獲取二進位制數中某一位的值
阿新 • • 發佈:2018-12-26
題目描述
獲取數字 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,輸出的就只有第一位上的數字,也即是我們需要的那個