Допустим, у меня есть что-то вроде этого
var num = 1 << 9 //equals 512
//OR
num = 1 << 6 //equals 64
//OR
num = 1 << 6 ^ 1 << 9 //equals 576
//OR
num = 1 << 6 ^ 1 << 9 ^ 1 << 1 ^ 1 << 8 //equals 834
Я пытаюсь взять число, скажем 834
, и пропустить его через функцию, чтобы перевернуть его и получить все числа, которые сделали это, когда Я сделал левый сдвиг, в данном случае 834
, числа, которые сделали это, были 6, 9, 1 и 8.
ИЛИ, я хочу взять переменную num
и получить все значения X в 1 << X ^ 1 << X
и превратить его в массив.
Итак,
var values = [0,1,2,3,6,7,8,9,10,12,14,16,17] //this can occur as X in 1 << X
function bitNumberToArray(bitNumber) {
var arr = [];
// what do I put here?
return arr;
}
console.log(bitNumberToArray(834))
//returns [1, 6, 8, 9] *ORDER DOESN'T MATTER*
Если вам интересно, что я делаю, я получаю пользователя, затем получаю его флаг (это просто битовое число) и конвертирую его во что-то удобный для пользователя, например This user is staff, holds badge X
на Discord
Понятия не имею, с чего начать, толчок в правильном направлении поможет.