Дробные как в памяти представлены?
От: LaptevVV Россия  
Дата: 29.03.08 09:52
Оценка:
При написании интерпретатора встал вопрос о представлении дробных в памяти.
Понятно, что стандарт IEEE 754.
Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант.
А как в памяти расположены целые?
Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты.
Это будет конкретное представление дробного в памяти пентюха.
А что говорит по этому поводу стандарт IEEE 754?
Где посмотреть?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Дробные как в памяти представлены?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 29.03.08 19:25
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти.

LVV>Понятно, что стандарт IEEE 754.

Честно говоря, это "понятно" никак с ходу не понятно:)

LVV>Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант.

LVV>А как в памяти расположены целые?

Наверно, точно так же — на тупоконечной архитектуре (big endian) старший байт по младшему адресу, на остроконечной (little endian) — наоборот.

LVV>Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты.

LVV>Это будет конкретное представление дробного в памяти пентюха.
LVV>А что говорит по этому поводу стандарт IEEE 754?
LVV>Где посмотреть?

Под рукой нет, но насколько я помню — он разрешает оба варианта.
The God is real, unless declared integer.
Re: Дробные как в памяти представлены?
От: sraider http://dvinogradov.blogspot.com
Дата: 29.03.08 20:19
Оценка:
LVV>Где посмотреть?
в документации на нужный процессор
Re: Дробные как в памяти представлены?
От: wallaby  
Дата: 29.03.08 21:07
Оценка: 14 (1)
Например, здесь

On some machines, while integers were represented in little-endian form, floating-point numbers were represented in big-endian form. [3] Because there are many floating formats, and a lack of a standard "network" representation, no standard for transferring floating point values has been made. This means that floating point data written on one machine may not be readable on another, and this is the case even if both use IEEE 754 floating point arithmetic since the endian-ness of the memory representation is not part of the IEEE specification. [4]


На некоторых машинах, хоть целые и представлены в остроконечной форме, числа с плавающей запятой представлены в тупоконечной.
[skip]
Остро/тупо-конечность не является частью спецификации IEEE 754.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re: Дробные как в памяти представлены?
От: Юрий Жмеренецкий ICQ 380412032
Дата: 30.03.08 13:32
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти.

...

В байткоде используют т.н. canonical representation, а перед запуском(или выполнением) происходит преобразование в формат целевой платформы с последующим выполнением, либо эмуляция операций с использованием VM при отсутствии аппаратной поддержки.
В качестве canonical representation может выступать любой удобный формат. Если в качестве него выбрать формат самой распространенной используемой платформы, то в этом случае(выполнение на этой платформе) никаких преобразований выполнять не нужно.

Некоторые детали можно найти в книге Derek M. Jones "The New C Standard An Economic and Cultural Commentary и по ссылкам в ней.
Re[2]: Дробные как в памяти представлены?
От: LaptevVV Россия  
Дата: 01.04.08 06:35
Оценка:
Здравствуйте, wallaby, Вы писали:

W>Например, здесь


W>

W>On some machines, while integers were represented in little-endian form, floating-point numbers were represented in big-endian form. [3] Because there are many floating formats, and a lack of a standard "network" representation, no standard for transferring floating point values has been made. This means that floating point data written on one machine may not be readable on another, and this is the case even if both use IEEE 754 floating point arithmetic since the endian-ness of the memory representation is not part of the IEEE specification. [4]


W>На некоторых машинах, хоть целые и представлены в остроконечной форме, числа с плавающей запятой представлены в тупоконечной.

W>[skip]
W>Остро/тупо-конечность не является частью спецификации IEEE 754.
Понятно. В общем, можно делать как больше нравится.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Дробные как в памяти представлены?
От: remark Россия http://www.1024cores.net/
Дата: 13.04.08 14:39
Оценка: 3 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти.

LVV>Понятно, что стандарт IEEE 754.
LVV>Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант.
LVV>А как в памяти расположены целые?
LVV>Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты.
LVV>Это будет конкретное представление дробного в памяти пентюха.
LVV>А что говорит по этому поводу стандарт IEEE 754?
LVV>Где посмотреть?


Жди полной версии или беги за журналом
Плавающая запятая
Автор: Сергей Холодилов
Дата: 15.03.08




1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.