Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Внутреннее представление формата Extended (10 байт)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
wasabi



Зарегистрирован: 11.06.2004
Сообщения: 3
Откуда: Moscow

СообщениеДобавлено: Чт Июл 01 2004 15:33    Заголовок сообщения: Внутреннее представление формата Extended (10 байт) Ответить с цитатой

Помогите, пожалуйста. Переписываю программу с Delphi на GNU C. На Delphi программа записывет в файл число Extended. Надо его прочитать, а типа размером 10 байт, насколько я знаю, в Си нет.
Всвязи с чем самым разумным мне кажется способ найти описание внутреннего представления числа Extended и ковертировать его ручками в long double.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
grayrat



Зарегистрирован: 30.06.2003
Сообщения: 189

СообщениеДобавлено: Чт Июл 01 2004 17:04    Заголовок сообщения: Ответить с цитатой

Это в visual C нет. А в Gnu, на сколько я помню, есть long double.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wasabi



Зарегистрирован: 11.06.2004
Сообщения: 3
Откуда: Moscow

СообщениеДобавлено: Чт Июл 01 2004 23:28    Заголовок сообщения: Ответить с цитатой

Цитата:
Это в visual C нет. А в Gnu, на сколько я помню, есть long double.

long double занимает 12 байт. Правда у него последние два почти всегда равны 0 (я не нашел ни одного примера, когда хотя бы один бит из последних 16 был бы отличен от 0). При этом представлнение чисел в формате Extended и long double отличаются.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Andy_user



Зарегистрирован: 03.12.2003
Сообщения: 382
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Июл 02 2004 09:14    Заголовок сообщения: Ответить с цитатой

Тип числа с повышенной точностью
Десятибайтовое (80-битовое) число типа Extended подразделяется на четыре поля:
1 разряд - s - знак;
15 разрядов - e - експонента;
1 разряд - i - (?);
63 разряда - f - мантисса
---
Значение v этого числа определяется с помощью выражений:
if 0 < e < 32767, then v = (-1)^s * 2^(e-1023) * (i.f).
if e = 32767 and f = 0, then v = (-1)^s * Inf.
if e = 32767 and f <> 0, then v = NaN.
---
Что-то вроде этого.
Извините, если не так, давно это было...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
grayrat



Зарегистрирован: 30.06.2003
Сообщения: 189

СообщениеДобавлено: Пт Июл 02 2004 09:16    Заголовок сообщения: Ответить с цитатой

Первый раз слышу чтобы long double занимал 12 байт !
выполни вот это:

Код:
#include <stdio.h>
void main()
{
   printf( "%d\n", sizeof(long double) );
}


12 байт, наверное, получается из-за того что стоит выравнивание на границу двойного слова

10 байт в long double это как раз соответствует внутреннему представлению типов с плавающей точкой в процессорах семейства х86, а 12 - это, извените, не пришей рукав к одному месту, как говорится
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...