题目
Write a function that takes an integer as input, and returns the number of bits that are equal to one in the binary representation of that number. You can guarantee that input is non-negative.
Example: The binary representation of 1234 is 10011010010, so the function should return 5 in this case
思路
利用 toString 方法,把十进制转成二进制,再利用 toString ,把数字转成字符串,遍历字符串判断1的个数。
var countBits = function (n) {
let s;
s = n.toString(2).toString();
let ans = 0;
for (let i = 0; i < s.length; i++) {
if (parseInt(s[i]) == 1) {
ans++;
}
}
return ans;
};
JS中的进制转换总结
由于大部分语言只支持八进制,十进制和十六进制的字面量数值,所以js在进行转换的时候,只能在字符串和数字类型之间转换,即只能将其他进制的字符串转换为十进制的数字,或者将十进制的数字转换为其他进制的字符串。
主要有以下两种Number类型下的方法:
一、 Number.parseInt(string , radix)
只能是由低进制转高进制,如二进制转八进制,但是八进制不能转二进制,radix表示进制,取值2~36
Number.parseInt('010',8)//8
Number.parseInt('20',2)//NaN
二、Number.toString(radix)
只能将十进制数字转换为任意进制的字符串形式,同样,radix表示进制,取值2~36。
(10).toString(2)//"1010"转2进制
(10).toString(16)//"a" 转16进制
(1000).toString(36)//"rs" 转36进制