function demo (number){
let max = null
for(var i = 0; i< Infinity; i++){
if(Math.pow(2,i) > number) {
max = i
break;
}
}
var powers = []
for(var power = max;number > 0;power --){
if(Math.pow(2,power) > number){
power--
}
powers.push(power)
number -= Math.pow(2,power)
}
return powers
}
const data = demo(45)
console.log(data)
//采用位运算
const newBusiness = (business) => {
if (!business) return ''
let bus = [
{ name: 'a', value: 1 },
{ name: 'b', value: 2 },
{ name: 'c', value: 4 },
{ name: 'd', value: 8 },
{ name: 'e', value: 16 },
{ name: 'f', value: 32 },
{ name: 'g', value: 64 },
]
const newBus = bus.filter(ele => (business & ele.value) !== 0)
let tmp = []
for (let index = 0; index < newBus.length; index++) {
let element = newBus[index]
tmp.push(element.name)
}
return tmp.join(',')
}
newBusiness(45)
2的幂分解
于 2023-06-08 11:13:31 首次发布