Как представить -0 в двоичном формате

Этот вопрос касается преобразования числа с плавающей запятой, меньшего, чем abs(1) и отрицательного, в формат 32,32, например: -0,1234.

Когда это преобразуется в 32,32, целая часть и дробная часть разделяются на старшие и младшие 32-битные слова соответственно. В приведенном выше примере верхние 32 бита будут содержать -0, а нижние - 0,1234, оба преобразованы в двоичные.

Итак, вопрос в том, как в этом случае правильно представить значение -0 в двоичном формате?


person DougEC    schedule 15.08.2011    source источник


Ответы (2)


Это зависит.

person Oliver Charlesworth    schedule 15.08.2011
comment
Хорошая точка зрения. Этот вопрос возник из-за требований заказчика, указывающих формат числа, который следует использовать при сохранении двойных значений в EEPROM. Интересно, что требование действительно говорит о кодировании чисел в формате дополнения 32.32 2. Будучи дополнением до 2, как тогда значение -0,1234 может быть закодировано и записано в EEPROM, а затем извлечено и декодировано без потери отрицательного знака? - person DougEC; 15.08.2011
comment
@doug: можно думать о 32.32 так, что он будет представлять некоторое число x точно так же, как 64.0 будет хранить x * (1L << 32). - person Oliver Charlesworth; 15.08.2011

+0 == 0 == -0 для практических целей программирования. В этом случае вам нужно будет выяснить, как обрабатываются отрицательные числа, но основная система. (Как правило, либо дополнение до двух, либо знаковый бит ) и, соответственно, манипулировать этим.

person zellio    schedule 15.08.2011