Показать сообщение отдельно
  #6 (permalink)  
Старый 15.01.2023, 14:47
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от voraa Посмотреть сообщение
1673357377000
В 2 это 00000001 10000101 10011011 11011111 00111101 11101000
В 16 это 01 85 9B DF 3D E8
Ну никак не 4 байта, а 6

Такие числа представляются как double64
В js целые числа меньшие 2**53 - 1 хранятся как денормализованные double64

В windows есть калькулятор. Проверьте в режиме "программист"
Да, видимо из-за сдвига >>> 0 уменьшилось итоговое количество битов (Зачем его там тогда вообще применяли??). Число 1673357377000 (в миллисекундах) в двоичной системе имеет значение 11000010110011011110111110011110111101000 (41 бит).

Получается, если хранить в секундах — 1673357377, то это поместится в 4 байта 1100011101111010110100001000001 (31 бит).


А как тогда сохранить в файл большое беззнаковое целое число?

const bigInt = 340282366920938463463374607431768211455n;

console.log(bigInt.toString(2))
Ответить с цитированием