Given an array of ones and zeroes, convert the equivalent binary value to an integer.
Eg: [0, 0, 0, 1] is treated as 0001 which is the binary representation of 1.
Examples:
Testing: [0, 0, 0, 1] ==> 1
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 0, 1] ==> 5
Testing: [1, 0, 0, 1] ==> 9
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 1, 0] ==> 6
Testing: [1, 1, 1, 1] ==> 15
Testing: [1, 0, 1, 1] ==> 11
const binaryArrayToNumber = arr => {
let newArr = arr.reverse();
let sum = 0;
for (let i = 0; i < newArr.length; i++) {
if (i === 0 && newArr[i] === 1)
sum += 1;
else if (newArr[i] === 1)
sum += Math.pow(2, i);
else
sum += 0;
}
return sum;
};
나처럼 뒤집은 뒤, 자릿수로 곱하는 방법도 있지만 아래에처럼.reduce()
로 누적으로 자릿수를 곱하는 방법도 있다.
const binaryArrayToNumber = arr => {
return arr.reduce((total, cur) => (total = total * 2 + cur), 0);
}
parseInt()
로 2진수를 10진수로 바꾸는 방법도 있다.
const binaryArrayToNumber = arr => parseInt(arr.join(''), 2);