Форум: "Основная";
Текущий архив: 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