ведущий бит в двоичной системе с плавающей точкой (IEEE) - PullRequest
0 голосов
/ 09 декабря 2011

фон для вопроса - спецификации бинарного 32 float

Мой вопрос касается предположения, что первый (ведущий) бит всегда равен 1, поэтому нам не нужно его хранить.Это правда, но у него есть другая роль в числе ... мы знаем, где это начинается.Поэтому после извлечения этого первого ненулевого бита мы не знаем, где начинается число, если только после этого не будет другого ненулевого бита.

В этой статье вики они используют двоичный номер (1.100011).Таким образом, дробь равна 100011, и мы можем восстановить это число без проблем.Однако как насчет (1.000011) двоичного файла?мы извлекаем 1, и у нас остается 000011, и, поскольку мы не можем хранить начальные нули в битовом поле, инициализированном нулем, мы получаем 11. Но что происходит, когда мы хотим построить его обратно?мы получаем 1,11, и это неправильно.

Так как же мы можем свободно извлечь этот начальный бит в произвольном числе?

1 Ответ

2 голосов
/ 10 декабря 2011

Однако, как насчет (1.000011) двоичного файла? мы извлекаем 1, и у нас остается 000011, и, поскольку мы не можем хранить начальные нули внутри битового поля, инициализированного нулями, мы получаем 11.

На самом деле вы храните ведущие нули. То, что сохраняется, это 000011, и когда 1 добавляется обратно, вы возвращаетесь к тому, с чего начали. Хранение ведущих нулей (после удаления первой 1) - вот что заставляет его работать.

...