javascript - 在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"]));
解决方案
用这个:
function OffBinary(strArr) {
let changes = 0;
Number(strArr[0]).toString(2).split('').forEach((digit, i)=>{
if (digit != strArr[1].charAt(i)) changes++;
});
return changes;
}
推荐阅读
- c - 在 AVX 向量中加载 64 位整数
- java - 来自 DB 的图像不会显示在 JSP 中:找不到 HTTP 请求的映射
- batch-file - FFMPEG 使用 concat 在窗口中创建多个输出
- c++ - 运行没有dll文件的exe:Codelite
- mysql - 在 MySQL 中重用别名
- opencv4android - 如何在opencv android中合并两个垫子
- python - 了解从 float 到 python 的 np.uint8 的转换
- php - 请求库:无法建立新连接:[Errno 13] 权限被拒绝
- arrays - 在 Swift 中将字符串数组转换为字典,如何?
- xml - XSLT:选择任何一个兄弟姐妹