skip to content

🔢二进制

什么是二进制计数法?

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

JavaScriptNumber.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('')
}

JavaScriptparseInt 的模拟实现

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)
}