pri*_*esh 8 javascript bit-manipulation
假设我有2个数字,例如1和2.它们的二进制表示为'01'和'10',因此它们的位差为2.对于数字5和7,二进制表示将为'101'和'111',因此位差为1 .当然,我可以将这两个数字转换为二进制,然后循环它以找到差异但是有任何更简单的方法.
您可以使用按位 XOR ( ) 来识别位不同的位置,将结果转换为字符串,然后计算字符串中^出现的次数:1
const bitDiffCount = (a, b) => {
const bitStr = ((a ^ b) >>> 0).toString(2);
return bitStr.split('1').length - 1;
};
console.log(bitDiffCount(5, 7));
console.log(bitDiffCount(1, 2));
console.log(bitDiffCount(16, 16));
console.log(bitDiffCount(16, 17));
console.log(bitDiffCount(16, 18));
console.log(bitDiffCount(16, 19));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |