Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
3-1091694318
Misha Uskov
2004-08-05 12:25
2004.08.29
проблемы с серверным курсором в ADO


14-1091636339
Fay
2004-08-04 20:18
2004.08.29
Полный RULEZZ!


1-1092200671
Незнайка
2004-08-11 09:04
2004.08.29
Уважаемые мастера подскажите как средствами Delphi создавать PDF


14-1092312824
Andy BitOff
2004-08-12 16:13
2004.08.29
Подскажите компонент, для создания doc по шаблону.


8-1086795239
leon
2004-06-09 19:33
2004.08.29
Image с прозрачным фоном