首页 > 解决方案 > 在Javascript中查找要更改的位数以获得等效的二进制数

问题描述

目标是确定需要更改二进制数中的多少位才能正确表示十进制数(0 更改为 1,反之亦然)。

例如:如果 strArr 是 ["56", "011000"] 那么您的程序应该返回 1,因为二进制数中只需要更改 1 位(第一个零需要变为 1)才能正确表示二进制中的 56。

Input: ["5624", "0010111111001"]; Output: 2

Input: ["44", "111111"]; Output: 3

到目前为止我尝试过的 -

function OffBinary(strArr) { 
  
  let binaryNum = 
    Number(strArr).toString(2).split("").reverse().join("");
  return parseInt(binaryNum + "00", 2); 

}
 
console.log(OffBinary(["5624", "0010111111001"]));
console.log(OffBinary(["44", "111111"]));

标签: javascript

解决方案


用这个:

function OffBinary(strArr) { 
  let changes = 0;
  Number(strArr[0]).toString(2).split('').forEach((digit, i)=>{
    if (digit != strArr[1].charAt(i)) changes++;         
  });
  return changes;
}

推荐阅读