5.2 повторяющийся двоичный файл, как рассчитать двоичное значение - PullRequest
0 голосов
/ 05 июня 2019

двойное число 5,2, когда я нахожу двоичное значение этого повторяющегося двоичного файла, которое я получаю как 01000000 00010100 11001100 11001100 11001100 11001100 11001100 11001100 как это, когда я печатаю двоичное значение программно и ссылаясь на сайты, это что-то вроде этого 01000000 00010100 11001100 11001100 11001100 11001100 11001100 11001101 Как рассчитать двоичные биты двойного.

Согласно моему ответу это должно быть напечатано как -52 -52 -52 -52 -52 -52 20 64 но реальный ответ -51 -52 -52 -52 -52 -52 20 64 как меняется этот бит?

1 Ответ

1 голос
/ 05 июня 2019

Если вы выразите десятичное дробное число, например "###. 2", в двоичном дробном числе, это будет повторяющееся двоичное дробное число.

Это бесконечно повторяющееся, потому что 0.2 не может быть выражено как конечная (ограниченная) сумма двоичных цифр справа от «десятичной» точки. Первый бит обозначает 2 ^ (- 1) = 0,5, второй бит обозначает 2 ^ (- 2) = 0,25 и так далее. Попробуйте сами.

Если вы посмотрите на битовую комбинацию 5.25, она не будет повторяться.

Пожалуйста, прочитайте эти статьи: https://en.wikipedia.org/wiki/Fraction_(mathematics) и https://en.wikipedia.org/wiki/Repeating_decimal.

Поскольку double имеет ограниченный размер, бесконечно повторяющееся число должно быть вырезано в некоторой точке. И поэтому в первом случае представление было округлено в меньшую сторону, а во втором случае оно было округлено в большую сторону.

Для получения дополнительной информации см. Когда мне следует использовать double вместо десятичной? даже для C #.

...