"En Java, los operadores bit a bit trabajan con enteros. JavaScript no tiene enteros. Solo tiene números de coma flotante de precisión doble. Por lo tanto, los operadores bit a bit convierten sus operandos numéricos en enteros, hacen su trabajo y luego En la mayoría de los lenguajes, estos operadores están muy cerca del hardware y muy rápido. En JavaScript, están muy lejos del hardware y son muy lentos. JavaScript rara vez se usa para manipular los bits ". - Douglas Crockford, Javascript: The Good Parts
El punto es que realmente no tiene ningún motivo para utilizar operadores bit a bit. Simplemente multiplique o divida por 2^numbits.
El código debería ser:
for(var j = 0; j < 64; j++) {
mask = mask * 2;
console.log(mask);
}
o en general:
function lshift(num, bits) {
return num * Math.pow(2,bits);
}
Usted consigue la idea.
jsPerf dijo que no. http://jsperf.com/multiply-vs-divide/9 – Shinjikun