使用JavaScript将10进制数字转为2进制数字和任意进制数字

首先我们先看10进制转换为2进制

想要会转换,首先需要理解10进制转换为2进制的规则。

首先,我们可以将10进制数除以2(因为2进制是满2进1),直到结果是0为止,过程中产生的余数排列在一起就是我们需要的2进制数字
可以这样看:

除法余数
10 / 2 = 50
5 / 2 = 21
2 / 2 = 10
1 / 2 = 01

将得到的余数依次放进数组里,为0=>1=>0=>1,但是取出的时候为1=>0=>1=>0
理解了过程之后开始看实现过程:

function decimalToBinary(decNumber) {
      const remStack = []               // 存放得到的余数
      let number = decNumber            // 存放要转换的10进制数字
      let str = ''                      // 最后返回拼接完成的2进制数字
      let rem = null                    // 每次获取到的余数

      while(number > 0) {               // 当最后为0时,说明计算结束
          rem = Math.floor(number % 2)  // 余数 
          remStack.push(rem)            // 把获取到的余数放入数组中
          number = Math.floor(number / 2)  // 每次除2后,重置一下数字,然后进行下一次计算
      }
      while(remStack != '') {            
          str += remStack.pop().toString()      // 这里进行拼接
      }
      return str
  }

以上是10进制转为2进制方法,下面是

10进制转为2-36进制的方法:

function decimalToBinary(decNumber, base) {
    const remStack = []
    const digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'      // 按顺序定义需要转换的数字
    let number = decNumber
    let str = ''
    let rem = null

    if(!(base >=2 && base <= 36)) {
        return ''
    }

    while(number > 0) {
        rem = Math.floor(number % base)
        remStack.push(rem)
        number = Math.floor(number / base)
    }
    while(remStack != '') {
        str += digits[remStack.pop()]              // 转换为对应进制的数字,并且进行拼接
    }
    return str
}

以上就是使用JS将10进制转为任意进制的方法,部分代码来自于《学习JavaScript数据结构与算法》一书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值