解题
通过num.toString(2)能直接将num转换为2进制数格式的字符串,利用下标就能将对应值取出来。题目返回的数字是从右往左,因此下标为倒数,所以就是s.length-bit
function valueAtBit(num, bit) {
var s = num.toString(2);
return s[s.length - bit]; //注意理解该处
}
Q1:s[s.length - bit];
s不应该是字符串吗,怎么可以用数组的方法来找bit位置的值
A1:js 字符串、数组是类数组,区别是字符串是不可变的,而 数组是可变的。不可变是指字符串的成员函数不会改变原始值,而创建返回一个新的字符串
Q2:用parseInt
函数可以吗
A2:parseInt(num,进制)是将num看成几进制再转化为十进制整数
一、知识点 - toString方法(number > string)
定义
toString() 方法可把一个 Number 对象转换为一个字符串,并返回结果。
语法
NumberObject.toString(radix)
- NumberObject可以是二进制、八进制、十进制、十六进制,以开头格式为准
参数
- radix - (可选) 规定表示数字的基数,使 2 ~ 36 之间的整数。例如,当 radix 为 2 时,会被转换为二进制值表示的字符串。
- 省略则默认10
- 但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。
返回值
返回radix进制的字符串
实例
var a = 32;
console.log(a.toString(2)); //返回字符串100000
console.log(a.toString(4));