什么是二进制计数法?
53 的十进制表达
53 = 5*10^1 + 3*10^0
53 的二进制表达
53 = 1*2^5 + 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0
JavaScript
中 Number.prototype.toString()
的模拟实现
Number.prototype.toStringFake = function (base) {
let decNumber = this
let remArr = []
let rem = 0
while (decNumber > 0) {
rem = Math.floor(decNumber % base)
if (rem > 10) rem = String.fromCharCode(rem + 87) // 余数超过9以[a-f]显示
remArr.unshift(rem)
decNumber = Math.floor(decNumber / base)
}
return remArr.join('')
}
JavaScript
中 parseInt
的模拟实现
const parseIntFake = (numText, dec = 10) => {
return numText
.split('')
.reverse()
.reduce((prev, next, index) => {
next = isNaN(+next) ? next.charCodeAt() - 87 : +next
return prev + Math.pow(dec, index) * next
}, 0)
}