Побитовое ИЛИ в рубине против JavaScript
Пытаясь преобразовать генератор UID из Javascript в Ruby, я хотел понять следующее поведение.
эта строка кода
89190868196442450 | 0
дал бы в JavaScript
1074708816
и в рубине
89190868196442450
Я полностью понимаю поведение ruby, поскольку битовый оператор OR копирует немного, если он существует в другом операнде, но яЯ все еще озадачен поведением JavaScript. Я посмотрел глубже в представлении целых чисел javascript и не смог найти четкого объяснения. янашел это, но не до конца понял.
89190868196442450 в двоичном виде это 100111100110111101001111101000000000011101100000101010010, что делает его длиной 57 бит.
Может ли кто-нибудь дать мне четкое объяснение или вышеупомянутый результат. И какую операцию я должен сделать с кодом ruby, чтобы обеспечить подобное поведение?