Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 16 июн 2024, 00:28

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 23 апр 2012, 13:56 
Не в сети
Аватара пользователя

Зарегистрирован: 05 янв 2012, 05:50
Сообщения: 33
Откуда: Калининградская обл.
В общем, есть три ячейки памяти в которых храниться трехразрядное десятичное значение. Типа а=09, в=09, с=09, это число 999. Нужно преобразовать его в щеснадцатеричное число . МК АТ2313. Совсем голову сломал, как это сделать. Подскажите или примерчик какой, где это используеться? На АВ разумееться или АСМ, нашел кучу примеров на СИ, но я в нем не понимаю.
Заранее спасибо!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 23 апр 2012, 23:04 
Не в сети
Аватара пользователя

Зарегистрирован: 12 фев 2012, 22:25
Сообщения: 72
Давайте уточним задачу. Если речь идет о ячейках памяти, то там уже не десятичные числа а их "двоичные" (шестнадцатеричные) собратья и из ячейки ничего преобразовывать не надо.

Если все таки стоит задача перевода трехразрядного десятичного числа в шестнадцатеричный код, то тогда Ок. Как минимум понятна задача. Поэтому перед тем как что-то делать, давайте все таки определимся что именно делаем, и откуда берутся эти числа, тем более в десятичном формате.

В классике двоичное число получается целочисленным делением десятичного числа на 2. Последовательность остатков после каждого деления и есть двоичный аналог десятичного числа.

Например:

999/2=499 + 1 остаток
499/2=249 + 1 остаток
249/2=124 + 1 остаток
124/2=62 + 0 остаток
62/2 =31 + 0 остаток
31/2 =15 + 1 остаток
15/2 = 7 + 1 остаток
7/2 = 3 + 1 остаток
3/2 = 1 + 1 остаток

ИТОГО 999 в двоичной системе это #b1110011111 или в шестнадцатеричной #h39F


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 01:01 
Не в сети
Аватара пользователя

Зарегистрирован: 05 янв 2012, 05:50
Сообщения: 33
Откуда: Калининградская обл.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 05:07 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3769
Откуда: Россия


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 08:37 
Не в сети
Аватара пользователя

Зарегистрирован: 12 фев 2012, 22:25
Сообщения: 72


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 08:48 
Не в сети
Аватара пользователя

Зарегистрирован: 12 фев 2012, 22:25
Сообщения: 72
Часть цитаты от xfly
Задача выполнить преобразование в точности до наоборот. Из трех ячеек содержащих десятичные значения, получить в рег. паре шестнадцатеричное.

Это не задача перевода чисел из одной системы счисления в другую. И решается элементарно. Digit2+Digit1*10+Digit0*100. Такой алгоритм сможете написать самостоятельно прокрутив в циклах операцию сложения?

Только примите во внимание тот факт, что результат этого сложения обязательно должен будет писаться в двойной регистр формата Word. Удачи.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 13:50 
Не в сети
Аватара пользователя

Зарегистрирован: 05 янв 2012, 05:50
Сообщения: 33
Откуда: Калининградская обл.
Спасибо! Но, это не в точности до наоборот, результатом будет в регистровой паре (WORD) HEX значение, т.е $999, а нужно в НЕХ, т.е. $3E7.


Последний раз редактировалось xfly 24 апр 2012, 20:55, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3769
Откуда: Россия


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 20:28 
Ничего я не напутал...
Берем калькулятор и переключаем его в режим НЕХ.
Digit0=$9
Digit1=&9
Digit2=$9

$9*$10=$90
$9*$100=$900
$900+$90+$9=$999

Но это &999 в НЕХ, переводим его в десятичное $999 = 2457, что не есть гуд. Эта формула не переводит из одной системы в другую, просто из трех разных ячеек, размером байт каждая, она упаковавает эти данные в одну переменную типа WORD.
Подпрограмма, которую я привел выше, получает данные в спаренном регистре Z, допустим это будет число $3E7.
На выходе мы имеем:
Digit0=&9
Digit1=$9
Digit2=&9
Что эквивалентно десятичному значению шестнадцатеричного $3E7.
Мне нужно как раз обратный процесс, с клавиатуры я ввожу десятичные числа, потому, что обычные люди привыкли пользоваться именно этой системой, а в счетчик надо поместить НЕХ, чтобы он посчитал именно $3E7 раз или 999 раз, а не $999 раз или 2457 раз.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Преобразование десятичных чисел в шеснадцатеричные.
СообщениеДобавлено: 24 апр 2012, 20:42 
Не в сети
Аватара пользователя

Зарегистрирован: 05 янв 2012, 05:50
Сообщения: 33
Откуда: Калининградская обл.
Это я выше написал, просто почемуто автоматически не прошла регистрация, а я не заметил этого. Я не напутал, просто действительно неправильно выразился, исправил.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB