按位设置计算类型,如下:
const action1 = 1; // 二进制0001
const action2 = 2; // 二进制0010
const action3 = 3; // 二进制0100
const action4 = 4; // 二进制1000
操作可以混合,比如 action1 + action2 + action3 ,就是
7 // 二进制 0111
然后现在给我一个数比如6,我要计算出是哪些操作,这个要怎么计算,有没有成熟的第三方库。
按位设置计算类型,如下:
const action1 = 1; // 二进制0001
const action2 = 2; // 二进制0010
const action3 = 3; // 二进制0100
const action4 = 4; // 二进制1000
操作可以混合,比如 action1 + action2 + action3 ,就是
7 // 二进制 0111
然后现在给我一个数比如6,我要计算出是哪些操作,这个要怎么计算,有没有成熟的第三方库。
function toBinary(num) {
num = Number(num)
let result = []
while(num > 1) {
let bit = num % 2
result.push(num % 2)
num = (num - bit) / 2
}
result.push(num)
return result.map((bit, index) => bit ? ('action' + (index+1)) : '').filter(a => !!a).join(',')
}
console.log(toBinary(11))
很少贴完整的解决方案,只能鼓励你多去尝试吧
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
没理解为什么需要独立的库?如果你需要二进制的话,你可以直接
toString(2)
。如果只是单纯的位运算,那么都是
&、|
这些吧。直接使用不就好了。