Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HEX, BIN, DEC, перевод туда-обратно 
:(
    Опции темы
mr.Anderson
Дата 25.8.2005, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Итак, я пытаюсь в данный момент разобраться с переводом чисел десятичных в числа шестнадцатеричные и двоичные.
Вопрос 1. Я перевел число 17828 в шестнадцатеричный формат. Получилось 45А4.
Затем перевел получившееся 45А4 в двоичный формат. Получилось 1001011010100. А затем попробовал перевести десятичное 17828 в двоичный формат. Получилось совсем другое: 11111000101000. Так и должно быть, или я что-то наврал?

Вопрос 2. Как переводить числа из двоичной системы в DEC, и как в HEX? Из DEC и HEX в двоичную я перевожу путем "приставки" кодов друг к дружке. Например, код двойки - 10, код нуля - 0, код восьмерки - 1000. Число 208 в двоичном - получаем 10+0+1000 = 1001000. А как назад?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Mayk
Дата 25.8.2005, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Ух, не понял, что подразумевается под переводом - алгоритм перевода из одной сс в другую, или код, чтобы число перевести и распечатать?
Если второе, то вот пара способов по печати hex'а (вход - al принадлежит [0..15], выход al принадлежит ['0'..'9', 'A'..'F']. Остаётся символ напечатать только)
1) Прочитал в книге Зубкова, рулёз.
Код

cmp al, 10
sbb al, 69h
das

2)Прочитал в старой спекрутмской книге, автора не помню. Сиим пользуюсь с самого детства smile
Код

add al, 90h
daa
adc al, 40h
daa


Это сообщение отредактировал(а) Mayk - 25.8.2005, 18:51


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 25.8.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Нет, я имел в виду именно первую... smile А до понимания всех этих команд я еще не дошел.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Mayk
Дата 25.8.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Ух, тогда можно вику почитать:
http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%...%BD%D0%B8%D1%8F


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 25.8.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Спасибо за статью, но там я ничего не понял... К тому же, там так и не сказано, как же двоичную систему в десятичную перевести... Мож, вы объясните?
Вот пример: есть число 1001011010100. Опишите пошагово, как его превратить в десятичную...

И еще: вы не ответили на вопрос
Цитата
Вопрос 1. Я перевел число 17828 в шестнадцатеричный формат. Получилось 45А4.
Затем перевел получившееся 45А4 в двоичный формат. Получилось 1001011010100. А затем попробовал перевести десятичное 17828 в двоичный формат. Получилось совсем другое: 11111000101000. Так и должно быть, или я что-то наврал?



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Mayk
Дата 25.8.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(sim7 @ 25.8.2005, 22:38)
Затем перевел получившееся 45А4 в двоичный формат.

вот это верно

Цитата(sim7 @ 25.8.2005, 22:38)
Получилось 1001011010100. А затем попробовал перевести десятичное 17828 в двоичный формат. Получилось совсем другое: 11111000101000. Так и должно быть, или я что-то наврал?

А это наврал. Ни одно из чисел не является числом 45a4.
45a4 = 0100.0101.1010.0100
Добавлено @ 20:29
Цитата(sim7 @ 26.8.2005, 00:07)
Вот пример: есть число 1001011010100. Опишите пошагово, как его превратить в десятичную...

Млин, я заколебаюсь объяснять по этому числу. Короче идея такова - число 10101(для простоты) можно представить как сумму
10000b и 100b и 1b. 100b это тоже самое, что и 2**2 (точно так же как и в десятичной 100 означает то же самое, что и 10**2) . 1.0000b это 2**4, а 1 то же самое что и 2**0. Потом берешь всё это и складываешь - 2**4+2**2+2**0 = 16+4+1=21.

Найти учебник по информатике. Там есть такое.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 25.8.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



А что такое 2**2? Впервые вижу такую запись...
Цитата
вот это верно

Что конкретно верно? То, что я перевел число в двоичный формат? Так вы же сами дальше говорите, что это не верно...
И потом, почему надо разделять точками? Неужто комп все с точками читает?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Mayk
Дата 26.8.2005, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(sim7 @ 26.8.2005, 00:36)
2**2

2**2 - 2 в степени 2. 10**2 - десять в степени 2.



Цитата(sim7 @ 26.8.2005, 00:36)
Что конкретно верно?

Цитата(sim7 @ 25.8.2005, 22:38)
Я перевел число 17828 в шестнадцатеричный формат. Получилось 45А4.





Цитата(sim7 @ 26.8.2005, 00:36)
И потом, почему надо разделять точками?

Можешь не разделять, но что удобне прочитать - 1.0011.1100.0000.0000.0101 или 100111100000000000101? Первая форма записи для человека ГОРАЗДО удобнее. Имхо.

Это сообщение отредактировал(а) Mayk - 26.8.2005, 09:28


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Akina
Дата 26.8.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



sim7
Есть достаточно весомые основания полагать, что у тебя ОС семейства Windows... smile

Запусти Калькулятор. Поставь Инженерный вид. Переводи часла из одной системы в другую и проверяй с помощью Калькулятора.

Цитата(sim7 @ 25.8.2005, 19:38)
Из DEC и HEX в двоичную я перевожу путем "приставки" кодов друг к дружке. Например, код двойки - 10, код нуля - 0, код восьмерки - 1000. Число 208 в двоичном - получаем 10+0+1000 = 1001000

Это неверно. Проверка - см. выше.

Перевод из одной системы в другую производится либо делением, либо умножением на основание одной в другой.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mr.Anderson
Дата 26.8.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Цитата
Запусти Калькулятор

Это слишком легко. Я хочу научиться в уме, или, по крайней мере, на бумаге.
Цитата
Перевод из одной системы в другую производится либо делением, либо умножением на основание одной в другой.

Хорошо, давайте попробуем. Переводим число 150 в двоичный формат. Проверьте меня...
150d = ?b
150/2 = 75(0) 0
75/2 = 37(1) 1
37/2 = 18 (1) 1
18/2 = 9 (0) 0
9/2 = 4 (1) 1
4/2 = 2 (0) 0
2/2 = 1 (0) 0
1/2 = 0 (1) 1
150d = 10010110b

Получается число 10010110. Так, что ли?
А теперь надо 10010110b перевести обратно в десятичный формат. Делаем так?
1*2=2+0=2
2*2=4+0=4
4*2=8+1=9
9*2=18+0=18
18*2=36+1=37
37*2=74+1=75
75*2=150+0=150

10010110b=150d

Все ли правильно? Если правильно, то все здорово! smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Akina
Дата 27.8.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(sim7 @ 26.8.2005, 17:51)
Все ли правильно? Если правильно, то все здорово!

Начни с единицы и таким способом переводи в бин и обратно, сравнивай конечное с исходным. Совпало - бери следующее число... если числа кончатся и не будет найдено несовпадение - метод верен smile нормально.
Обрати внимание: переводя ИЗ системы счисления, ты делил, В систему счисления - множил.

Если бы ты переводил 10010110 в десятичную систему, выполняя вычисления в двоичной - ты бы тоже делил.

Код

10010110 MOD 1010 = RES 1111 REM    0
    1111 MOD 1010 = RES    1 REM  101
       1 MOD 1010 = RES    0 REM    1


Итого получается (1) (101) (0), или в десятичной системе все те же 150.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mr.Anderson
Дата 27.8.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Как это? Когда я переводил 150 в двоичную, я вообще-то делил, а не умножал...
А вообще, я ничего из ваших объяснений не понял. И что за код? Зачем он тут?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Akina
Дата 27.8.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(sim7 @ 27.8.2005, 16:08)
И что за код? Зачем он тут?

Чтобы колоночки были ровные, ё моё...

Цитата(sim7 @ 27.8.2005, 16:08)
Когда я переводил 150 в двоичную, я вообще-то делил

А я что, что-то другое говорил? Если бы ты выполнял этот перевод в двоичной системе - ты бы множил. А в десятичной - ты делил.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SergeCpp
Дата 20.9.2005, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: нет
Всего: 124



Кнут — Искусство программирования — 2-й том

Там есть всё!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.