使用JavaScript将10进制数字转为2进制数字和任意进制数字
程序员文章站
2024-03-18 18:24:10
...
首先我们先看10进制转换为2进制
想要会转换,首先需要理解10进制转换为2进制的规则。
首先,我们可以将10进制数除以2(因为2进制是满2进1),直到结果是0为止,过程中产生的余数排列在一起就是我们需要的2进制数字。
可以这样看:
除法 | 余数 |
---|---|
10 / 2 = 5 | 0 |
5 / 2 = 2 | 1 |
2 / 2 = 1 | 0 |
1 / 2 = 0 | 1 |
将得到的余数依次放进数组里,为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数据结构与算法》一书。
上一篇: 5、hibernate第五课