"В Java побитовые операторы работают с целыми числами. JavaScript не имеет целых чисел. Он имеет только числа с плавающей запятой двойной точности. Таким образом, побитовые операторы преобразуют свои числовые операнды в целые числа, выполняют свою работу, а затем преобразуют их обратно. В большинстве языков эти операторы очень близки к аппаратному обеспечению и очень быстры. В JavaScript они очень далеки от аппаратного и очень медленны. JavaScript редко используется для выполнения битовых манипуляций ». - Дуглас Крокфорд, Javascript: The Good Parts
Дело в том, что у вас нет никакой причины использовать побитовые операторы. Просто умножьте или разделите на 2 ^ numbits.
Ваш код должен быть:
for(var j = 0; j < 64; j++) {
mask = mask * 2;
console.log(mask);
}
Или вообще:
function lshift(num, bits) {
return num * Math.pow(2,bits);
}
Вы поняли идею.