Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 967

/ вопрос открыт /

Здравствуйте! помогите пожалуйста!!!
Дана программа (TurboPascal):

Program pr_04_01;
var R : real; M : array[0..5] of byte absolute R;
begin
R := -3/2;
Write( M[0],' ',M[1],' ', M[2],' ');
Write( M[3],' ', M[4], ' ', M[5] );
Readln;
end.

Определить, какие числа M[0], M[1], M[2], M[3], M[4], M[5] напечатает программа. Преподаватель вместо -3/2 задаст другое число !

Иринчик Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Иринчик (статус: Посетитель)
Вопрос отправлен: 26 января 2011, 16:23
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Иринчик!
Специально подгуглил и нашел.
Итак, 6 байт нужно представить в виде 48 бит.

0 < e <= 255
v = (-1)s * 2(e-129) * (1.f )


если e = 0, тогда v = 0.

то есть, в m[5] будет сохранена экспонента, у m[0] в старшем бите знак. m[0] .. m[4] сохраняют мантису.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 26 января 2011, 18:30
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 30 января 2011, 11:16; участников в обсуждении: 4.
Иринчик

Иринчик (статус: Посетитель), 26 января 2011, 16:46 [#1]:

И наоборот, преподаватель задает M[0], M[1], M[2], M[3], M[4], M[5], какое R напечатает программа? помогите, пожалуйста!!!!
Вадим К

Вадим К (статус: Академик), 26 января 2011, 18:05 [#2]:

тут уже в уме не посчитаешь так просто. Нужно знать, как представляется в памяти.
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 27 января 2011, 11:59 [#3]:

Я дико извиняюсь, но не совсем так. Знаковый бит и порядок будут "в одном конце" длинного слова.

http://ru.wikipedia.org/wiki/Число_одинарной_точности

Вопрос вроде простой, но поверг. ТрубоПаскаля у меня нет, попробовал Дельфи - получаю в байтах одни нули! Изъял не используемое мной описание absolute, заменил на Record case ... - все равно. Удивительное рядом...
Вадим К

Вадим К (статус: Академик), 27 января 2011, 12:14 [#4]:

уверены? это паскаль, а не делфи. В делфи real == single и оно 4 байта. в паскале оно 6 байт. в современном паскале этот тип называется real48 и не используется сейчас. потому что медленный и устаревший:)
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 27 января 2011, 12:48 [#5]:

Попробовал... ( см.выше ) Но ведь стуктура процессора не изменяется от применяемого языка, он работает всегда одинаково. Другое дело что полученные результаты компилятор рассовывает по памяти в соответствии с тем, что он "считает правильным".
Когда я разбирал содержимое памяти еще для 16-разрядных процессоров, структура real была именно такой : знак числа - порядок - мантисса. И это согласовывалось и с вышеприведенной цитатой, и с арифметикой старой доброй СМ-4, в которой я прграммировал исключительно на ассемблере ( пижонство, конечно, имевшийся там Фортран давал вполне вменяемый код ).
Вадим К

Вадим К (статус: Академик), 27 января 2011, 13:45 [#6]:

мы говорим не о вещественном числе процессора, а о представлении типа real для компилятора языка паскаль.
Галочка "подтверждения прочтения" - вселенское зло.
bugmenot

bugmenot (статус: 3-ий класс), 29 января 2011, 11:26 [#7]:

Толяныч, Real48 же!
виконання програми розпочинається з того самого мiсця, де призупинилося.

Иринчик

Иринчик (статус: Посетитель), 30 января 2011, 11:16 [#8]:

Ну так все таки, как ответить то ему по этому вопросу?))))

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:26
Выполнено за 0.03 сек.