Форум программистов, компьютерный форум CyberForum.ru

Тип данных учетверенной точности в C/C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Asm из cpp, с или других расширений http://www.cyberforum.ru/cpp/thread54004.html
Можно ли в автоматическом режиме в Visual Studio получить asm-файл из cpp-файла или c-файла или объектных, библиотечных файлов при условии что исходный код известен, но лень все переделывать на asm, может входит в Visual Studio какая-нибудь подобная утилита?
C++ Default.cfg Существует ли, какой-нибудь системный файл под именем default.cfg в системных папках, отвечающий за работу шрифтов. Если существует, то где он находится(его относительный путь). И за что он отвечает? http://www.cyberforum.ru/cpp/thread53952.html
C++ Изменить прошивку
Чем можно открыть bin-файлы что бы изменить прошивку полностью существуют программы которые переводят из машинного когда в язык С++ или еще в какой небудь за раннее Спасибо.
C++ Вопрос про bin-файлы
Я знаю,что в bin файле хранятся другие файлы.В моём случае мне надо вытащить файлы из bin;из установочного файла игры
C++ carbide c++ v2.0 http://www.cyberforum.ru/cpp/thread53505.html
ВСем привет,я новичок ,причем чайник) Скачал carbide c++ v2.0,собираюсь кодить под с++ for symbian s60 3rd,так вот, не могу разобраться,запускаю carbide,выбираю file/new/с++ проект ,правильно же? потом открывается это окно: http://msg.dimonvideo.ru/1530655/karbit_by_rasd_in_01102009131640_f.jpg что делать?Что там выбирать?
C++ Адреса функций По каким правилам в памяти ОС(операционная система формирует адреса), как определяет что эта область памяти не занята и туда можно записывать, также как формируется адреса виртуальных функций в памяти при подключении dll, например стандартная точка входа dll в программу обычно начинается с 0x10000000, а виртульные функции находятся на солидной дистанции в памяти объекта где-то в районе... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17623 / 5847 / 375
Регистрация: 30.03.2009
Сообщений: 16,124
Записей в блоге: 26
05.10.2009, 14:33
В данном случае sizeof не показателен. Если я ничего не путаю, то на x86 аппаратный long double равен 80 битам (10 байтам), но из-за выравнивания он вытянут до 12 байт (т.е. 2 байта не используются вообще). На amd64 может быть то же самое, о вытянуто до 16 байт, а может мантисса длинная, как на sparc'е

Более правильно подключать файл <float.h> и смотреть значения макросов:
LDBL_MANT_DIG - количество бит под мантиссу
LDBL_MAX_EXP - максимальное значение экспоненты (она знаковая), исходя из этого вычисляется её битовый размер, а сумма этих двух величин - это и есть битовое значение размера аппаратного long double'а

C
1
2
3
4
#include <float.h>
LDBL_MANT_DIG
LDBL_MIN_EXP
LDBL_MAX_EXP
Код
$ gcc t.c -E
...
64
(-16381)
16384
Итого получается 64 бита мантисса, 15 бит экспонента (именно столько нужно для хранения диапазона от -16381 до 16384) и 1 бит на знак. Итого 80 бит

Добавлено через 11 минут
Причём если посмотреть на аналогичные макросы для float и double и те же самые макросы для sparc, то там знаковый бит не надо приплюсовывать, потому как он учитывается в длине мантиссы. Зачем сделали так непонятно, но причина этого следующая. В стандатрах float32 и float64 для мантиссы хранится только часть после запятой, т.к. целая часть в экспотенциальной форме для двоичного числа всегда равна единице. На sparc'е аналогичным образом сделан и long double. А вот на intel'е long double сделан не как у людей и в мантиссе у них хранится ещё и старшая единица. Т.е. для "нормальных" чисел у них этот бит всегда взведён в единицу. При этом есть ещё какие-то "ненормальные" числа, но я толком не помню, что это такое
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru