![]() |
|
![]() ![]() ![]() |
|
Ink82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.6.2007 Репутация: нет Всего: нет |
Итак есть некое число на экране прибора, которое преобразуется в 4х байтный код..
Второй день бьюсь, не могу понять алгоритм, видимо что то связано с плавающей запятой.. к сожалению тему эту подзабыл ) а точных алгоритмов с примерами не нашел.. (число) (4x байтный код числа) (перевел в dec) 1 D693A400 3 600 000 000 1,4 9944E2DB 2 571 428 571 1,5 8F0D1800 2 400 000 000 2 6B49D200 1 800 000 000 2,1 662DEC92 1 714 285 714 2,2 6188ED74 1 636 363 636 2,3 5D4B526F 1 565 217 391 2,4 59682F00 1 500 000 000 2,5 55D4A800 1 440 000 000 2,6 52878D89 1 384 615 305 2,7 4F790D55 1 333 333 333 2,8 4CA2716D 1 285 714 285 2,9 49FDF1EE 1 241 379 310 3,0 47868C00 1 200 000 000 4 35A4E900 900 000 000 4,1 3455F60C 878 048 780 4,2 3316F649 857 142 857 4,3 31E6CCD6 837 209 302 4,4 30C476BA 818 181 818 4,5 2FAF0800 800 000 000 4,6 2EA5A937 782 608 695 4,7 2DA79546 765 957 446 4,8 2CB41780 750 000 000 4,9 2BCA89F5 734 693 877 5 2AEA5400 720 000 000 5,5 2703922E 654545454 6 23C34600 600000000 6,5 21030589 553846153 7 1EA76092 514285714 8 1AD27480 450000000 9 17D78400 400000000 10 15752A00 360000000 20 0ABA9500 180000000 т.е. шаг 0,1.. похожая штука была где к числу на приборе прибавлялось справа 3 нуля и это переводилось в hex ! но там не было запятой, а тут запятая.. тут сильно все хитрей. з.ы. если не найду алгоритм, придется просто забить в виде таблицы.. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
число = (4x байтный код единицы) / (4x байтный код числа)
Добавлено через 1 минуту и 9 секунд напр. код 35A4E900 (для числа 4), соответствено D693A400 / 35A4E900 = 4 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Nikolja |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 24.2.2009 Где: Черкассы Репутация: нет Всего: -1 |
Т.е., если переформулировать вопрос, в каком-то приборе 16-ричное число D693A400 означает 1.0 в формате числа с плавающей запятой ? Так? А если это самое число D693A400 перевести в десятичное целое это будет равно 3 600 000 000. Я не пересчитывал -- это я по цитируемому сообщению расшифровываю, пытаюсь понять. И вы хотите спросить, каким образом (по какому принципу) машина может расшифровать D693A400 и как 3 600 000 000, и как 1.0 ? Так я вас понял? |
|||
|
||||
Ink82 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.6.2007 Репутация: нет Всего: нет |
Да, моя задача понять алгоритм перевода экранного числа во внутреннее представление.. Т.е. по какому принципу происходит перевод из десятичного числа с запятой в hex код..! Добавлено через 9 минут и 45 секунд
Да, походу так и есть.. этот алгоритм работает. почему то я не подумал про арифметические действия )) Большое спасибо.. Сейчас подумаю и напишу вторую часть )) но это конечно не показывает алгоритм.. почему так как есть, хотя возможно и не было никакого алгоритма, а прогеры забили это от балды использую выше приведенную формулу! Т.е. я хочу сказать, что все равно остается не понятно, почему десятичная 1 означает D693A400, а не какой то другой код.. хотя для выполнения задачи это и не важно. |
||||||
|
|||||||
Nikolja |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 24.2.2009 Где: Черкассы Репутация: нет Всего: -1 |
Если хотите основательно, ДЛЯ СЕБЯ, разобраться, то могу порекомендовать почитать в книге Н.Г.Голубь "Искусство программирования на Ассемблере" (Глава 2. Формат представления базовых данных в IBM PC). ТАМ более-менее неплохо и доступно написано, в отличие от большинства книг по Ассемблеру. Когда поймёте, КАК представляется действительное число в двоичном коде (и КАК целое число представляется) -- будете знать, как вашу таблицу расшифровать. Будете ОСМЫСЛЕННО понимать.
Если взяться МНЕ Вам объяснить, то многовато писать придётся, как для сообщения на форуме. Вот я Вам книгу и даже главу в ней нашёл. Попробуйте поискать. НА ФОРУМЕ Вам ТАК не распишут! С табличками, с определениями точными и т.п. Пару лет назад я на языке Java писал небольшую программку, которая переводит числа в разные форматы. ЕСЛИ я её найду (не обещаю, что найду), то вы в языке Java сумеете разобраться? Знаете хотя бы его основы? Основ будет достаточно. Это сообщение отредактировал(а) Nikolja - 8.12.2011, 13:13 |
|||
|
||||
Ink82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.6.2007 Репутация: нет Всего: нет |
асм знаю, и паскалевскую с производными системами знаю.. джаву, нет не знаю.. хотелось бы на пальцах. я теорию плохо понимаю, мне надо практику. типа вот число 5 .. переводим его туда то.. получается то то.. на вики тоже теория без примеров.. вообщем этим все грешат к сожалению. это чтоб люди деньги платили за репетиторов ( з.ы. Вы мне скажите, Вы видите тут перевод в какую то систему или формат float, или это какая то отсебятина прогера который прошивку прибора писал? |
|||
|
||||
Nikolja |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 24.2.2009 Где: Черкассы Репутация: нет Всего: -1 |
"Гранаты у него не той системы" (с) ![]() Похоже, что какая-то отсебятина! Я тут сам сейчас в ту книжку заглянул, что вам рекомендовал. Припомнить, как там действительное число по битам расписывается. Ан нетъ. ![]() Число у вас размером 4 байта. Следовательно, это тип float, а не double. Число 1.0 типа float равно 16-ричному 3F80 0000. А у Вас равно D693A400.
5.0, если угодно, если записать его в 4 байта, будет равно 40A0 0000. А у вас 2AEA 5400. Пока что мне непонятно! В языке Java есть готовые функции (или как там принято говорить -- методы), чтобы выводить числа в разных форматах. Я вот уже нашёл их. Только толку теперь... У вас, похоже, какой-то другой формат. Не float. Это сообщение отредактировал(а) Nikolja - 8.12.2011, 14:49 |
||||
|
|||||
Nikolja |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 24.2.2009 Где: Черкассы Репутация: нет Всего: -1 |
А любопытно было бы понять, откуда такое правило? Почему ТАК? Сам с приборами некоторое время работал, но с таким не сталкивался. Допустим целые числа возможно таким образом посчитать. А как получить дробные, исходя из такого правила? К примеру 1.5 D693A400 / 8F0D1800 = 1 Это сообщение отредактировал(а) Nikolja - 8.12.2011, 15:57 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ну например числа могут быть частотой некоторого сигнала в герцах, а выдаваемый код - количество импульсов опорного генератора частотой 3.6 Ггц, подсчитанное за один период измеяремого сигнала. Добавлено через 1 минуту и 38 секунд Вы, батенька, считать не умеете... D693A400 / 8F0D1800 = 1.5 А вот D693A400 \ 8F0D1800 = 1 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Ink82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.6.2007 Репутация: нет Всего: нет |
переменная так и называется "коэффициент импульсов"
![]() |
|||
|
||||
Ink82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.6.2007 Репутация: нет Всего: нет |
(2хбайтный код) (число на экране) (перевел в Dec)
18 0BDB 3035 17,9 0BEC 3052 17,8 0BFD 3069 17,7 0C0F 3087 17,6 0C20 3104 17,5 0C32 3122 17,4 0C43 3139 17,3 0C55 3157 17,2 0C68 3176 17,1 0C7A 3194 17 0C8D 3213 16,9 0CA0 3232 16,8 0CB3 3251 16 0D54 3412 15 0E36 3638 10 153F 5439 8 1A7E 6782 5 232E 9006 4 3456 13398 3 4538 17720 2 662E 26158 1 C312 49938 Здесь второй столбик это начало диапазона при котором получается некое число. Например код от 0C8D до 0С79 отвечает за число 17.. Это говорит о том, что где то при переводе в другой формат отбрасываются какие то нули.. но вот где непонятно. p.s. шаг тот же 0,1 Это сообщение отредактировал(а) Ink82 - 12.12.2011, 11:20 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |