Почему положительное число работает с поразрядным или 0 не всегда положительным в Javascript

Почему положительное число работает с поразрядным или 0 не всегда положительным в Javascript

Например:

3391700000|0
-903267296

4260919000|0
-34048296

2884900000|0
-1410067296

Я использую chrome 64-bit в Linux

относящийся к: qaru.site/info/11950/...

Ответы

Ответ 1

Поскольку JavaScript использует не более 32-битных целых чисел, но имейте в виду, что каждый номер является своего рода плавающей точкой на этом языке.

Если вы хотите усечь их до 32-значного значения без знака:

(3391700000|0) >>> 0

Ответ 2

В JavaScript операнды побитовых операторов преобразуются в подписанные 32-разрядные целые числа в формате 2-х дополнений. Вот почему вы получили некоторую потерю данных, а усеченные значения иногда отрицательны из-за подписанного представления двух дополнений.

Вы можете ссылаться на Почему побитовый сдвиг с 0 в JavaScript дает странные результаты в некоторых случаях, который был задан мной некоторое время назад, и некоторые ответы указывали на возможное выдача с побитовыми операторами, где ваши операнды значительно превосходят 32-битные целые числа.