【JavaScript刷题2:计算十进制数二进制形式中1的个数】

题目

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进制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值