Главная страница
    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.024 c
14-1091961456
Agent13
2004-08-08 14:37
2004.08.29
BSOD: Inaccessible boot device


14-1091964530
ИМХО
2004-08-08 15:28
2004.08.29
Уринотерапия


3-1091559812
U96
2004-08-03 23:03
2004.08.29
Вопрос по DBGrid


1-1092244853
Artog
2004-08-11 21:20
2004.08.29
При вызове Worda в потоке - синий экран.


3-1091693682
Sirruf
2004-08-05 12:14
2004.08.29
BLOB-поля по-простому





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский