进制是什么
- 进制就是进位计数制,人为定义的带进位的计算方法
- 对于任何一种进制---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}进制进行运算`;
}
}