FAndrey 0 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба Тип FLOAT в языке си имеет размерность 64 бита, если возвести 2 в 63 степень, то не получится максимально допустимое число, которое может использоваться. Как тогда представляются числа, может кто знает? Или знает ссылку на литературу где это можно посмотреть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость mihask 5 февраля, 2007 Опубликовано 5 февраля, 2007 (изменено) · Жалоба Тип FLOAT в языке си имеет размерность 64 бита, если возвести 2 в 63 степень, то не получится максимально допустимое число, которое может использоваться. Как тогда представляются числа, может кто знает? Или знает ссылку на литературу где это можно посмотреть? Есть такая книжка - "Алгоритмические трюки для программистов" - в сети можно скачать точно. Вот например - http://rapidshare.de/files/21992071/Hwa-alg.rar.html правда неуверен, что ссылка рабочая. Откуда сам качал не помню :) Там все про формат расписано. Кстати float - 32 бита занимает :), а вот double - 64 бита как раз. Изменено 5 февраля, 2007 пользователем mihask Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 12 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба где это можно посмотреть? http://www.psc.edu/general/software/packages/ieee/ieee.html The IEEE double precision floating point standard representation requires a 64 bit word, which may be represented as numbered from 0 to 63, left to right. The first bit is the sign bit, S, the next eleven bits are the exponent bits, 'E', and the final 52 bits are the fraction 'F': S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0 1 11 12 63 по-русски биты Е - "порядок", биты F - "мантисса" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bve 1 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба Тип FLOAT в языке си имеет размерность 64 бита, если возвести 2 в 63 степень, то не получится максимально допустимое число, которое может использоваться. Как тогда представляются числа, может кто знает? Или знает ссылку на литературу где это можно посмотреть? "Стандарт IEEE754/854" Самый старший бит - знак числа ( 1 - отрицательное ), далее следуют 8 бит экспоненты, при этом экспонента смещена на 127, т.е. показателю степени 0 соответствует 127, положительным показателям степени соответствуют числа от 127 до 254, отрицательным - от 1 до 126. Далее следует мантисса с так называемым "скрытым" битом. Для указанного стандарта считается, что мантисса всегда больше или равна 1 и меньше двух. Вот эта самая единица и нигде не представлена, а только подразумевается. Есть еще несколько "специальных" случаев, например - "бесконечность", ноль и "не число". Есть и экзотические представления, например, когда под экспоненту отводится больше бит или мантисса загоняется в диапазон 0 - 1, но для наиболее употребительным форматом является все-же вышеописанный. Правда, все вышесказанное относится скорее к 32-битному представлению, но 64-битное похоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAndrey 0 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба Спасибо. Значит я на верном пути. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAndrey 0 5 февраля, 2007 Опубликовано 5 февраля, 2007 · Жалоба Еще вопрос возник. С представлением чисел вроде бы понятно, а вот как машинно сделать перевод из одной системы в другую? С помощью какого алгоритма? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость mihask 6 февраля, 2007 Опубликовано 6 февраля, 2007 (изменено) · Жалоба Еще вопрос возник. С представлением чисел вроде бы понятно, а вот как машинно сделать перевод из одной системы в другую? С помощью какого алгоритма? Если необходимо самому реализовать, алгоритм преобразования, то прочитав подробное описание формата float и double - это несложно сделать самому. А в сях перевод из одной системы в другую достигается преобразованием типов, например: float fl=75.803; unsigned long lo; lo=(unsigned long)(fl*1000); получаем в переменной lo число 75803 lo == 75803 fl умножаем на тысячу что бы разряды не после запятой не потерять. Изменено 6 февраля, 2007 пользователем mihask Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAndrey 0 7 февраля, 2007 Опубликовано 7 февраля, 2007 · Жалоба Про типы почитал, и вроде бы разобрался. Операции сложения понятно как производятся. А вот с операциями деления и умножения не совсем. Пытался делить мантисыдруг на друга ответ не выходит, как получить дробную часть не пойму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость mihask 7 февраля, 2007 Опубликовано 7 февраля, 2007 · Жалоба Про типы почитал, и вроде бы разобрался. Операции сложения понятно как производятся. А вот с операциями деления и умножения не совсем. Пытался делить мантисыдруг на друга ответ не выходит, как получить дробную часть не пойму. А почему не хотите воспользоваться сишными функциями ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAndrey 0 7 февраля, 2007 Опубликовано 7 февраля, 2007 · Жалоба А почему не хотите воспользоваться сишными функциями ? я не уточнол свою задачу. Я пишу не на си, и мне нужно реализовать сложеиние, умножение, деление. А "СИ", я написал просто так, для того чтоб привести пример. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость mihask 7 февраля, 2007 Опубликовано 7 февраля, 2007 (изменено) · Жалоба А почему не хотите воспользоваться сишными функциями ? я не уточнол свою задачу. Я пишу не на си, и мне нужно реализовать сложеиние, умножение, деление. А "СИ", я написал просто так, для того чтоб привести пример. Посмотрите- помоему это то что вам нужно: http://www.intuit.ru/department/hardware/archsys/9/3.html то же прилепил в файле ___________________________________.doc Изменено 7 февраля, 2007 пользователем mihask Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAndrey 0 7 февраля, 2007 Опубликовано 7 февраля, 2007 · Жалоба Посмотрите- помоему это то что вам нужно: http://www.intuit.ru/department/hardware/archsys/9/3.html Спасибо, какраз то. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться