Я следую за курсом операционной системы в колледже, и мы недавно узнали, как номера плавающих точек представлены в памяти.
Наша домашняя работа состоит в том, чтобы преобразовать плавающие числа ( поплавок
) в их двоичные представления вручную.
E.G. 200 0234375
даст 010000110100100000000100001000000000011000000000 г.
после процесса длительного преобразования.
Одним из вопросов состоит в том, как 0.1F будет представлен в памяти. Поэтому я сделал весь процесс преобразования, и я закончил с этим:
001111011100110011001100110011001100110011001100
с тем, что мы узнали до сих пор, это правильный ответ на вопрос (я спросил учителя).
Но на следующем вопросе нас просят проверить ответ с программой, чтобы увидеть фактическое двоичное представление 0,1F. Реальное представление это:
001111011100110011001100110011001100110011001101
(обратите внимание на последний бит)
Мы тогда просят попытаться догадаться, почему это происходит.
Я заметил периодическое 0011
при преобразовании числа и, поскольку следующий бит после окончательного 0
был бы 1
, я бы предположил, что компьютер Окружал бы этот финал 0
к 1
, что объяснило бы разницу.
Итак, что я хочу знать, есть ли я правильно? - это закругление компьютера последнего бита на основе того, что будет следующим битом, когда используются 23 бита Mantissa?
Это домашнее задание, поэтому, если вы могли бы просто направить меня к ответу, если я Неправильно, я был бы признателен.
Кроме того, я не мог найти ответ на мой вопрос, погружаясь с ключевыми словами, о которых я мог подумать. Простите меня, если это дубликат.