Ответ 1
Потому что нуль берет двоичное значение.
4294967296 - количество "слотов", которое дает 32 бита, 4294967295 - это десятичное число, занимающее самый высокий слот.
Почему
((255<<24)|(255<<16)|(255<<8)|255)>>>0
равно 4294967295, когда
Math.pow(256,4)
равно 4294967296?
Обратите внимание, что побитовая операция одна короткая. Почему это?!
Потому что нуль берет двоичное значение.
4294967296 - количество "слотов", которое дает 32 бита, 4294967295 - это десятичное число, занимающее самый высокий слот.
Поскольку первый из них равен 2 ^ 32-1, а второй - 2 ^ 32? Вы знаете, что с первым "утверждением" вы устанавливаете 1 первые 32 бита значения, правильно?
В 32 бит первый бит "оценивается" 1, второй 2, третий 4... 32-й 2147483648. Их сумма составляет 4294967295: -)
Сделайте пример с 8 битами.
Math.pow(256,1) == 256
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255.