Проблема с простым вычислением Hex в Int - PullRequest
0 голосов
/ 07 июня 2019

Спецификации для файлов mp4 обрисовывают в общих чертах его содержащуюся матрицу. Для чего он описывает:

Матрица предоставляет матрицу преобразования для видео: (u, v, w) здесь ограничены (0,0,1) с типами (uint32_t, uint32_t, uint32_t) с шестнадцатеричными значениями: (0,0, 0x40000000). u, v и w сохраняются как 2,30 значения с фиксированной точкой.

Отложив весь контекст в сторону, Может кто-нибудь объяснить мне, как 0x40000000 равно 1 как значение с фиксированной точкой 2,30 в беззнаковой переменной Int (32)?

Я получаю 2, а не 1. К вашему сведению, я новичок в этих вещах.

1 Ответ

0 голосов
/ 07 июня 2019
0x40000000 = 0b01000000000000000000000000000000
         2 ----^^
       .30 ------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Первые два бита - 01, представляющие 1. Последние тридцать битов - 00…0, представляющие 0/2 30 .Сложите их вместе, чтобы получить 1.

В качестве альтернативы 0x40000000 / 2 30 также равно 1.

...