Пятница, 22.09.2017, 15:16
Приветствую Вас Гость | RSS

Кузница миров

Меню сайта
Категории раздела
Мои статьи [2]
Курс : "Основы С++ для начинающих программистов игр." [25]
WindMill Engine [3]
XNA4 RPG [0]
Перевод туториалов но созданию RPG на C# c XNA4.
C# & Leadwerks [5]
Программирование Leadwerks Engine на языке С# с помощью врапера Le.NET.

Каталог статей и уроков

Главная » Статьи » Курс : "Основы С++ для начинающих программистов игр."

4.2. Перевод из одной системы счисления в другую
4.2. Перевод из одной системы счисления в другую


Самый простой способ перевода чисел из одной системы в другую это … стандартный калькулятор операционной системы Windows в его инженерной ипостаси.
Но нам как программистам необходимо, хотя бы теоретически, знать, как это делается вручную. Все системы счисления я затрагивать не буду, а остановлюсь только на привычной нам десятичной и родной для компьютера – двоичной.
Немного теории.
Чтобы перевести число из одной системы счисления в другую нужно представить его в таком виде:



Здесь:
an … a0 – цифры от первой до последней
n – количество цифр, нумерация идет по уменьшению
С – система счисления(например 2, 10, 16 и др.) в соответствующей позиции n–ной степени.

Из вышеприведенной формулы следует(хотя вряд ли, подозреваю что вы в нее не въехали, но ничего, дальше поймете), что для перевода из большей системы в меньшую необходимо провести целочисленное деление числа на основание(систему счисления). Остаток это и будет наша цифра a0. Затем предыдущий результат от деления вновь делим нацело и получаем a1. И так далее пока результат от деления не будет равен 0.

Теперь пример перевода из десятичной в двоичную:

Возьмем число 75.
75 / 2 = 37; остаток 1.
37 / 2 = 18; остаток 1.
18 / 2 = 9; остаток 0.
9 / 2 = 4; остаток 1.
4 / 2 = 2; остаток 0.
2 / 2 = 1; остаток 0.
1 / 2 = 0, остаток 1.

Результат:
Напоминаю, что цифры записываются в обратном порядке.

75 = 1001011

Теперь будем переводить обратно, из меньшей в большую, то есть из двоичной в десятичную. В этом случае нам и понадобится приведенная выше формула.
Проведем обратное преобразование 1001011. Вычисления должны идти по требуемой, в нашем случае десятичной системе счисления.

1 * 26 + 0 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 = 64 + 8 + 2 + 1 = 75

Также часто в информатике используется шестнадцатеричная система. С ней компьютер способен работать и так. То есть можно сразу давать ему такие числа, предварительно сообщив об этом. Чтобы программа знала о том, что предлагаемое число в 16ричной системе, используется специальная запись с префиксом .

0х10, 0х50, 0х5А, 0х1А9В – это все числа в шестнадцатеричной системе.

Аналогичная ситуация с восьмеричной системой. Здесь префикс – 0, а запись 0144, 0456 означает, что число восьмеричное, при этом запись 08 вызовет ошибку, так как в восьмеричной системе цифры 8 нет.
Кроме этого возможно переключение вывода информации в консоли, что называется на лету. Для этого достаточно сообщить об этом оператору cout, передав ему определенную инструкцию. Для десятичной системы - dec, для шестнадцатеричной – hex и oct для восьмеричной.

Code

                cout << hex;  // шестнадцатеричная
     cout << 100  << '\n';    // 64
     cout << 0x64 << '\n';    // 64
     cout << 0144 << '\n';    // 64

     cout << dec;  // восьмеричная
     cout << 100  << '\n';    // 144
     cout << 0x64 << '\n';    // 144
     cout << 0144 << '\n';    // 144

     cout << dec;  // возврат к десятичной
     cout << 100  <<'\n';    // 100
     cout << 0x64 <<'\n';    // 100
     cout << 0144 <<'\n';    // 100


На этот с системами счисления заканчиваем. Примеры кода с преобразованием будут позже.
Категория: Курс : "Основы С++ для начинающих программистов игр." | Добавил: nilrem (11.05.2012)
Просмотров: 4910 | Рейтинг: 1.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0