JSFiddle - React, Tailwind, and code Playground

by Jon-Carlos Rivera

JavaScript

function log2(v) {
    // find the log base 2 of 32-bit v
    var MultiplyDeBruijnBitPosition = [
      0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
      8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31
    ];
    
    v |= v >>> 1; // first round down to one less than a power of 2 
    v |= v >>> 2;
    v |= v >>> 4;
    v |= v >>> 8;
    v |= v >>> 16;
    
    return MultiplyDeBruijnBitPosition[(v * 0x07C4ACDD) >>> 27];
}
var a = new Uint32Array(10);

for (var i = 0; i < 10; i++) a[i] = Math.random()*1000000;
    
var l = Array.prototype.map(a, log2);

console.log(a, l)