我想創建二進制到十進制計算器。當我嘗試控制臺記錄兩個陣列時(二進制是 0 和 1 的陣列,binarypos 是 2 的冪的數字陣列。
截屏
然后我創建了更簡單的版本,在控制臺中制作,因此出錯的機會降低到零。但是bug又出現了!
const x = Array(8).fill(1);
const xpos = Array(8).fill(0);
for (let i = 0; i < x.length; i ) {
xpos[x.length - 1 - i] = Number(x[i]);
xpos[i] = Math.pow(xpos[i] * 2, [i]);
}
console.log(xpos) // [1, 1, 1, 1, 16, 32, 64, 128]
我希望它看起來像這樣
console.log(xpos) // [1, 2, 4, 8, 16, 32, 64, 128]
uj5u.com熱心網友回復:
這個怎么樣?
const x = Array(8).fill(1);
const xpos = x.map((n,i) => Math.pow(2,i));
console.log( xpos );
uj5u.com熱心網友回復:
做這樣的事情不是更簡單嗎?
const x = Array(8).fill(1);
const xpos = [];
for (let i = 0, j=1; i < x.length ; i , j*=2 ) {
xpos[i] = j;
}
或者對于您的螢屏截圖表明您正在嘗試完成的操作:將一串二進制數字(0或1)轉換為其十進制表示,只需:
function binaryToDecimal( digits ) {
const isValid = /^[01] $/.test(digits);
if (!isValid) {
throw new TypeError("bindDigits must be a string containing only '0' and '1'.");
}
let value = 0;
let p = 1;
for ( const d of digits.split('').map( d => d ).reverse() ) {
value = d * p;
p *= 2;
}
return value;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512733.html
上一篇:Python/Sage中的路徑
下一篇:帶序數位置的距離公式計算
