Статья Автор: Лебедев Дмитрий

Кодирование в формате sing

Необходимо закодировать вещественное число x в формате single (32 бит) со смещением +127
1. Под кодировку выделяется 32 бита под следующие цели:
  • 1 бит (1-й) под знак (0 соответствует знаку + и 1 соответствует знаку минус)
  • 8 бит (2 -9-й) под порядок со смещением 127. Определяем порядок и добавляем смещение.
    Результат записываем в поля числа
Число
Порядок Порядок со смещением запись
101,00101 2 2+127=129 10000001
0,000000010101011 -8 -8+127=119 01110111
11111110,01 7 7+127=134 10000110
  • 23 бита (10-32-й) под мантису (1-ая 1 не записывается)
    Число (16-е) запись без разделителя мантиса без знака
    AB.BA  1010 1011 1011 1010 01010111011101
    0,06С 110 1100 1011
    2,F 10 1111 01111
ПРИМЕРЫ:
 

Как хранятся числа в компьютере?
Почему 0,5+0,1 не равно 0,4+0,2? А что больше?


Попробуем понять, в чём дело. 
Будем использовать метод x.hex(),  возвращающий представление вещественного числа


Попробуем получать представление вещественного числа в различных внутренних форматах типа IEEE754.
Для всех форматов (Half precision/Binary16; Single precision/Binary32; Double precision/Binary64; Quadruple precision/Binary 128) выделяют категории:
  • знак 
  • порядок
  • мантиса
Знак всегда занимает 1 бит. Этот бит всегда имеет старшую позицию (первую слева, нумерация битов начинается справа и от 0)
Для храниния порядка (экспоненты или показателя степени) отводится:
  • Half - 5 бит и со сдвигом равным 15 (25-1-1)
  • Single - 8 бит и со сдвигом равным 127 (28-1-1)
  • Double - 11 бит и со сдвигом равным 1023 (211-1-1)
  • Quadruple - 15 бит и со сдвигом равным 16383 (215-1-1)
Порядок занимает старшие разряды после знака. 
Порядок записывается со сдвигом, то есть чтобы получить актуально значение порядка нужно вычесть из него сдвиг. Сдвиг можно получить по формуле 2b−1-1, где b — число бит, отведенное на хранение порядка (в случае числа половинной точности b=5).
Для записи чисел используется нормализованная запись числа, при которой мантиса принадлежит полуинтервалу [1,10). При записи в двоичной системе нормализованная запись мантисы будет иметь вид 1,...... - 

 

Число половинной точности  — компьютерный формат представления чисел, занимающий в памяти половину машинного слова (в случае 32-битного компьютера — 1616 бит или 22 байта). В силу невысокой точности этот формат представления чисел с плавающей запятой обычно используется в видеокартах, где небольшой размер и высокая скорость работы важнее точности вычислений. Порядок записан со сдвигом −15.


Число одинарной точности — компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера — 32 бита или 4 байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность. Порядок записан со сдвигом − 127.


 

Число двойной точности — компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера — 64 бита или 8 байт). Часто используется благодаря своей неплохой точности, даже несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности. Порядок записан со сдвигом −1023.


 

Число четверной точности — компьютерный формат представления чисел, занимающий в памяти четыре машинных слова (в случае 32-битного компьютера — 128 бит или 16 байт). Используется в случае необходимости крайне высокой точности. Порядок записан со сдвигом −16383.

Обычно этот формат реализуется программно, случаи аппаратной реализации крайне редки. Также не гарантируется поддержка этого типа в языках программирования, хотя кое-где она и реализована (например, компилятор gcc для архитектуры x86 позволяет использовать тип __float128, являющийся программной реализацией числа с четверной точностью). В совокупности эти факторы делают Quadruple весьма экзотичным и редко встречающимся форматом чисел с плавающей запятой.


В Python вещественные числа хранятся в формате Double. С помощью метода hex() для вещественного числа можно получить строковое "внешнее" предствавление формата.
 


Декодирование числа по его представлению в вещественном формате

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать