您可以看看
parseInt(real_array[b],2);
其中有一个数字,该数字包含无法通过基数2解析的数字。
以2
和执行parseInt(2,2)
为例。
结果为NaN
,因为2
不是二进制数字,因为二进制数字只有0和1的数字。
除此之外,它是错误的方向,即二进制→十进制,但是您需要十进制→二进制。
您需要以2为底的Number#toString
,并以0开头。
您可以执行一个循环,然后将值添加到数组中。
循环后,对元素进行分配。
function decimal_table() {
const real_array = [];
const binary_array = [];
for (let i = 0; i <= 50; i++) {
real_array.push(i);
binary_array.push(i.toString(2).padStart(8,0));
}
document.getElementById("numbers").innerHTML = real_array.join(" ");
document.getElementById("binaries").innerHTML = binary_array.join(" ");
}
decimal_table();
<div id="numbers"></div>
<div id="binaries"></div>
,
您可以对基数为2的整数值使用toString()
方法来获取二进制表示形式。
然后您只需填充值即可。
const pad = (n,padding) => (padding + n).substr(-padding.length)
for (let i = 0; i < 8; i++) {
console.log(pad(i,' '),pad(i.toString(2),'0000'));
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/string-format/0.5.0/string-format.min.js"></script>
这是一个更高级的自带文档的版本。
const isFunction = (fn) => fn && {}.toString.call(fn) === '[object Function]'
const pad = (n,padding) => (padding + n).substr(-padding.length)
const range = (min,max,step) => {
if (max === undefined) { max = min; min = 0 }
if (step === undefined) { step = 1 }
return new Array(max - min).fill(0).map((_,i) => min + (isFunction(step) ? step(i) : (i * step)))
}
let start = 0
let end = 7
let base = 2
let binStep = n => Math.pow(base,n) // 2^n
let maxVal = binStep(end) // 2^7 = 128
let maxLen = Math.floor(Math.log10(maxVal)) + 1 // 3 (unused)
let decPad = maxVal.toString(10).replace(/\d/g,' ') // ' '
let binPad = maxVal.toString(2).replace('1','0') // '00000000'
range(start,end + 1,binStep)
.forEach(n => console.log(pad(n,decPad),pad(n.toString(2),binPad)))
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/string-format/0.5.0/string-format.min.js"></script>
本文链接:https://www.f2er.com/2960993.html