| 
| 
 | Вопрос # 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 (статус: 3-ий класс), 29 января 2011, 11:26 [#7]:Толяныч, Real48 же! виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Иринчик (статус: Посетитель), 30 января 2011, 11:16 [#8]:Ну так все таки, как ответить то ему по этому вопросу?)))) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |