Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

числа с плавающей точкой   Найти похожие ветки 

 
appendix ©   (2004-08-07 17:32) [0]

Помогите разобраться каким образом число
десятичное 0.213 передаётся в виде 4 байтной последовательности
119 206 94 68
Знаю что используется экспаненциальная форма представления.
Мантисса должна быть нормализована т.е быть в пределах 1..2
Как 0,213 нормализовать?

SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
ГДЕ S - знак
   E - Экспанента
   М - Мантисса


 
wicked ©   (2004-08-07 19:01) [1]

тип float/single?...


 
начинающий ©   (2004-08-07 19:14) [2]

Приведенный вами код - скорее всего несколько округлен! У меня эти четыре байта следующие(в HEX):
3E5A1CAC=0|01111100|10110100001110010101100
Найдём смещение в мантиссе:
7C-7F=-3 (результат < 1)
Мантиса=1+1/2Y1+1/2Y3+1/2Y4+1/2Y6+1/2Y11+1/2Y12+1/2Y13+1/2Y16+1/2Y18+1/2Y20+1/2Y21=1,703999996185302734375
1,703999996185302734375*1/2Y3=0,212999999523162841796875
Примечание: жирным выделены константы! "Y"-означает возведение в степень(сокращение для калькулятора Windows)


 
appendix ©   (2004-08-10 17:07) [3]

Обнаружено что число 2,000 передаётся в виде 0 0 0 64


 
Мастер ©   (2004-08-10 17:59) [4]

>appendix ©   (10.08.04 17:07) [3]
Обнаружено что число 2,000 передаётся в виде 0 0 0 64

Куда и каким образом?


 
appendix ©   (2004-08-11 19:02) [5]

Вероятно формула не та что нужно.
Число в формате float.

Удалось выяснить коды для следующих чисел:

0 0    0    0    0
1 0    0    128  63
1.1 205  204  140  63
1.2 154  153  153  63
1.01 174  71   129  63
1.02 92   143  130  63
2.0 0    0    0    64
2.1 102  102  6    64
3 0    0    64   64
4 0    0    128  64
5 0    0    160  64
6 0    0    192  64
7 0    0    224  64
10 0    0    32   65
100 0    0    200  66

0.213 119  206  94   68
Какая то логика в этом есть

может кто найдёт формулу

Передаются данные по ком порту...если что но это не важно, главное мне нужно правильно обработать данные.


 
appendix ©   (2004-08-11 19:04) [6]

Вероятно формула не та что нужно.
Число в формате float.

Удалось выяснить коды для следующих чисел:

0 0    0    0    0
1 0    0    128  63
1.1 205  204  140  63
1.2 154  153  153  63
1.01 174  71   129  63
1.02 92   143  130  63
2.0 0    0    0    64
2.1 102  102  6    64
3 0    0    64   64
4 0    0    128  64
5 0    0    160  64
6 0    0    192  64
7 0    0    224  64
10 0    0    32   65
100 0    0    200  66

0.213 119  206  94   68
Какая то логика в этом есть

может кто найдёт формулу

Передаются данные по ком порту...если что но это не важно, главное мне нужно правильно обработать данные.


 
Alx2 ©   (2004-08-11 19:06) [7]

>appendix ©   (11.08.04 19:02) [5]
Может, вместо того, чтобы "обнаруживать", почитать документацию? Если под рукой нет, можно на www.intel.com сходить.

А формула тут как и везде - система счисления по основанию 2. Плюс небольшой нюанс.


 
Alx2 ©   (2004-08-11 19:24) [8]

Начать можно с этого: http://www.vcl.ru/html/dos/appar/ch12.htm#ch12_1


 
ламер ©   (2004-08-11 20:26) [9]

если важно только "правильно обработать данные", то можно сделать очень просто:


var
 Data: array[0..3] of Byte;
 Sngl: PSingle;
...
 // массив Data заполняется полученными данными...
 Sngl := @Data[0]; // Sngl^ = полученному значению типа Single.
 ShowMessage(FloatToStr(Sngl^));
...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.03 c
1-1092656409
Alek
2004-08-16 15:40
2004.08.29
ПРограммы для КПК


14-1092070430
MC
2004-08-09 20:53
2004.08.29
Помогите найти загадки?


1-1092231820
Aleksandr.
2004-08-11 17:43
2004.08.29
У можно как-то у TList a сделать эффектное массовое удаление?


3-1091710441
Alexander1966
2004-08-05 16:54
2004.08.29
ODBC Drivers создание базы данных


14-1091897062
Knight
2004-08-07 20:44
2004.08.29
Вот тут часто при обсуждении Виндов...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский