2015-09-01 2 views
0

Предполагая, что у меня есть побитовое значение 66, которое составлено 2 и 64. Есть ли способ скорректировать это поразрядное в javascript, чтобы результатом был массив целых чисел [2,64]?Как скорректировать побитовое значение в массив int?

//Example 
function transformBW(x) { //where x = 82; 
    --------- 
    var result = [2,16,64]; //desired result 
    return result; 
}; 

// transformBW(66) = [2,64]; 

Любая помощь приветствуется.

Благодаря

ответ

0
// Assumes n is an integer >= 0 
function transformBW(n) { 
    var r = []; 
    var bv = 1; 
    while (n >= 1) { 
     if (n % 2 == 1) { 
      // Add the bit value (bv) of the LSB left in n 
      r.push(bv); 
      // Clear that bit 
      n -= 1; 
     } 
     // Shift n down 1 bit, adjusting bit value to the new LSB's value 
     bv += bv; 
     n /= 2; 
    } 
    return r; 
} 
+0

[работает] (http://jsfiddle.net/vladkras/gvzLnmL3/) – vladkras

+0

спасибо Скотт. работает как шарм;) – user3388377

Смежные вопросы