Altifigence Academy

5 / 24 · Теория

Биты и единицы фиксированной точки

Умножьте 0.5 и −1.25 при F=4, затем добавьте bias 0.25 при F=8. Каковы код аккумулятора и действительное значение?

Прикрепите единицу к целому числу

Фиксированная точка представляет действительное значение целочисленным кодом и постоянным масштабом. Зададим восемь бит всего, знаковое хранение в дополнительном коде и четыре дробных бита, F=4. Код q представляет q×2⁻⁴. Соглашения имён Q-форматов могут различаться в том, считается ли знак целым битом, поэтому явно записывайте общую разрядность, знаковость и F. Коды −128–127 представляют −8–7.9375.

Один битовый шаблон меняет смысл с масштабом. Код 24 представляет 1.5 при F=4, но три при F=3. Складывать коды разных единиц неправильно даже широким сумматором. Сначала согласуйте масштабы и определите внесённые согласованием округление и переполнение.

Разобранный пример

Закодируйте 1.5 как 24 и −0.75 как −12. Целочисленное произведение — −288. Дробные ширины складываются, поэтому произведение имеет F=8 и представляет −288/256=−1.125. Полное произведение двух знаковых восьмибитных операндов помещается в шестнадцать бит, но сумма многих произведений требует отдельного расчёта аккумулятора. Округление каждого произведения обратно до F=4 вносит ошибку в каждый член. Наша спецификация сохраняет масштаб произведения при накоплении и округляет один раз на выходе.

Действительный bias 0.5 становится кодом 128 при F=8. Добавление даёт −160, представляя −0.625. Добавление кода восемь, соответствующего bias при F=4, использовало бы неправильную единицу. Документируйте масштаб bias вместе с хранимым кодом.

При расширении отрицательного кода в дополнительном коде повторяйте знаковый бит. Восьмибитное представление −12 — 11110100; шестнадцатибитное расширение — 1111111111110100. Расширение нулями меняет его на положительное 244. Объявляйте операнды и промежуточные значения RTL знаковыми и явно задавайте ширины вместо предположения, что узкое назначение исправляет размеры выражения.

Масштабы степеней двух позволяют легко исследовать связь со сдвигом. Общее аффинное квантование использует другие положительные масштабы и нулевую точку. Храните код, масштаб и представленное значение вместе в заметках проекта, чтобы умножение, накопление и итоговое преобразование оставались понятными.

Попробуйте сами

Умножьте 0.5 и −1.25 при F=4, затем добавьте bias 0.25 при F=8. Каковы код аккумулятора и действительное значение?

Прочитать объяснение

Коды — восемь и −20, произведение — −160. Код bias равен 64. Аккумулятор −96 при F=8 представляет −0.375.

Выбор действует в этом браузере. Его можно изменить внизу страницы.