http://www.forum.getchip.net/ |
|
Преобразование десятичных чисел в шеснадцатеричные. http://www.forum.getchip.net/viewtopic.php?f=16&t=218 |
Страница 1 из 2 |
Автор: | xfly [ 23 апр 2012, 13:56 ] |
Заголовок сообщения: | Преобразование десятичных чисел в шеснадцатеричные. |
В общем, есть три ячейки памяти в которых храниться трехразрядное десятичное значение. Типа а=09, в=09, с=09, это число 999. Нужно преобразовать его в щеснадцатеричное число . МК АТ2313. Совсем голову сломал, как это сделать. Подскажите или примерчик какой, где это используеться? На АВ разумееться или АСМ, нашел кучу примеров на СИ, но я в нем не понимаю. Заранее спасибо! |
Автор: | Kolini [ 23 апр 2012, 23:04 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Давайте уточним задачу. Если речь идет о ячейках памяти, то там уже не десятичные числа а их "двоичные" (шестнадцатеричные) собратья и из ячейки ничего преобразовывать не надо. Если все таки стоит задача перевода трехразрядного десятичного числа в шестнадцатеричный код, то тогда Ок. Как минимум понятна задача. Поэтому перед тем как что-то делать, давайте все таки определимся что именно делаем, и откуда берутся эти числа, тем более в десятичном формате. В классике двоичное число получается целочисленным делением десятичного числа на 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 |
Автор: | xfly [ 24 апр 2012, 01:01 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Автор: | SVN [ 24 апр 2012, 05:07 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Автор: | Kolini [ 24 апр 2012, 08:37 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Автор: | Kolini [ 24 апр 2012, 08:48 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Часть цитаты от xfly Задача выполнить преобразование в точности до наоборот. Из трех ячеек содержащих десятичные значения, получить в рег. паре шестнадцатеричное. Это не задача перевода чисел из одной системы счисления в другую. И решается элементарно. Digit2+Digit1*10+Digit0*100. Такой алгоритм сможете написать самостоятельно прокрутив в циклах операцию сложения? Только примите во внимание тот факт, что результат этого сложения обязательно должен будет писаться в двойной регистр формата Word. Удачи. |
Автор: | xfly [ 24 апр 2012, 13:50 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Спасибо! Но, это не в точности до наоборот, результатом будет в регистровой паре (WORD) HEX значение, т.е $999, а нужно в НЕХ, т.е. $3E7. |
Автор: | SVN [ 24 апр 2012, 17:38 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Автор: | Гость [ 24 апр 2012, 20:28 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Ничего я не напутал... Берем калькулятор и переключаем его в режим НЕХ. 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 раз. |
Автор: | xfly [ 24 апр 2012, 20:42 ] |
Заголовок сообщения: | Re: Преобразование десятичных чисел в шеснадцатеричные. |
Это я выше написал, просто почемуто автоматически не прошла регистрация, а я не заметил этого. Я не напутал, просто действительно неправильно выразился, исправил. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |