Я недавно задал свой первый вопрос о переполнении стека (см.) Для цикла внутри другого для сбоев цикла в Javascript
и мне дали прекрасный ответ, который, кажется, работает (спасибо Ry-), однако я изучал код, чтобы выяснить, почему / как он работает, и меня смущает следующее утверждение «0x100000000 >>> 0»
Мое понимание (как выяснилось несколько дней назад) состояло в том, что битовый символ >>> сдвигается вправо, толкая нули слева, и самые правые биты падают. Следовательно, ">>> 0" не повлияет на уравнение?
Однако, когда я удаляю побитовый код, код не работает? Может кто-нибудь объяснить, почему?
const world = document.getElementById('canvas');
const context = world.getContext('2d');
const start = performance.now();
const {width, height} = world;
const random32 = new Uint32Array(width * height);
for (let i = 0; i < random32.length; i++) {
//THIS IS THE LINE I AM CONFUSED ABOUT
random32[i] = Math.random() * 0x100000000 >>> 0;
}
Я попытался удалить ">>> 0", но без него код не работает.
Я пытался узнать больше о побитовых символах и массивах Uint32, но не нашел ничего, что могло бы это объяснить.