多种进制之间的转换

进制是什么

  1. 进制就是进位计数制,人为定义的带进位的计算方法
  2. 对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位(同进制相加减)

注:有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数
基本概念

描述描述正则表达式
二进制0~1 来表示的数路通断的两种状态(计算机领域使用二进制是因为技术原因)/^[0,1]*$/
四进制0~3 来表示的数四进制是人们对地球环绕一周气候变化客观存在的描述,将公转一周化为四个区域,即为四时(春夏秋冬),将混沌的二元世界扩展成四元世界(用于遗传、数据传输、进制转换等)/^[0-3]*$/
八进制0~7 来表示的数电子技术、计算机编程等领域配合二进制使用/^[0-7]*$/
十进制0~9来表示的数作为计数方式/^[0-9]*$/
十六进制0~15来表示的数

电子技术、计算机编程等领域配合二进制使用。

0~9、10=>A、11=>B、12=>C、13=>D、14=>E、15=>F

/^[0-9A-f]*$/
三十二进制0~31 来表示的数0~9、10=>A、11=>B、12=>C、13=>D、14=>E、15=>F、16=>G、17=>H、18=>I、19=>J、20=>K、21=>L、22=>M、23=>N、24=>O、25=>P、26=>Q、27=>R、28=>S、29=>T、30=>U、31=>V/^[0-9A-u]*$/

方法

function regular(param1, param2, param3) {
  let arr = [2, 4, 8, 10, 16, 32];
  param3 = param3 ? param3 : 10;
  let obg = [/^[0,1]*$/, /^[0-3]*$/, /^[0-7]*$/, /^[0-9]*$/, /^[0-9A-f]*$/, /^[0-9A-u]*$/]
  let reg = obg[`${arr?.indexOf(param3)}`];
  let nub = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V'];
  if (reg.test(param1)) {
    let param = param1.toString().split('');
    let num = param.reduce((vauel, item, index) => (vauel += nub.indexOf(item) * (param3 ** ((param.length - index) - 1))), 0);
    const turn = (num1, num2) => {
      let num = Math.floor(num1 / num2);
      let value = num1 - num2 * num;
      return `${num ? turn(num, num2) : ''}${nub[value]}`;
    }
    return turn(num, param2);
  } else {
    return `选择正确的${param3}进制进行运算`;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值