HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Главная » Статьи » c++ |
Краткие сведения из курса двоичной арифметикиКак вам должно быть известно, человечество для своих целей в основном использует 10-ую систему счисления, которая содержит 10 цифр (0-9), а число 10 называется основанием системы счисления. Наша система счисления - позиционная, то есть число зависит от позиций содержащихся в нем цифр (пример непозиционной системы счисления - римская). Рассмотрим число 12345. 1234510 = 1 * 104 + 2 * 103 + 3 * 102 + 4 * 101 + 5 * 100 Следовательно, любое 10-ое число можно разложить на составляющие. Для этого достаточно сложить произведения всех цифр на 10 (основание системы счисления) в степени позиции цифры в числе, где позиции отсчитываются от 0 справа налево. Данное правило справедливо для любой позиционной системы счисления. К данному моменту вам должно быть также известно, что компьютер оперирует 2-ой системой счисления, содержащей 2 цифры 0 и 1. К этой системе счисления (она таки позиционная) применимо описанное выше правило. Например, 1010102 = 1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 = 4210 Но для человека оперировать 2-ой системой счисления неудобно, так как она слишком громоздкая. Поэтому в программировании чаще всего используется более компактная система счисления по основанию 16 (реже используется система счисления по основанию 8). 16-ая система счисления содержит 10 цифр (0-9) и 6 чисел, которые кодируются буквами латинского алфавита (A-F). Для хранения 16-ой цифры требуется log216 = 4 двоичных разряда (для 8-ой системы счисления, соответственно, 3 разряда). Примечание: для тех, кто собирается связать свое будущее с программированием необходимо помнить следуюшую таблицу:
Переводы чисел из одной системы счисления в другуюЧастный случай - системы счисления по основанию степени двойкиСистемы счисления, основание которых является степенью двойки (4-ая, 8-ая, 16-ая и т. д.), легко преобразуются одна в другую через двоичную систему счисления. Пример перевода числа из 2-ой СС в 16-ую СС. Для перевода необходимо брать по 4 разряда числа, отсчитывая справа налево, и кодировать их 16-ой цифрой. В случае если разрядов не хватает, перед числом дописывают нули. 101001011012 = 0101 0010 11012 = 52D16 Пример перевода числа из 2-ой СС в 8-ую СС. Для перевода необходимо брать по 3 разряда числа, отсчитывая справа налево, и кодировать их 8-ой цифрой. В случае если разрядов не хватает, перед числом дописывают нули. 101001011012 = 010 100 101 1012 = 24558 Процесс перевода чисел из СС, основанием которой является степень двойки, в двоичную аналогичен. Для этого необходимо каждую цифру числа заменить на соответствующий ей двоичный код. Пример: 1AC416 = 0001 1010 1100 01002 = 11010110001002 Общий случай - системы счисления по любому основаниюДля перевода числа из любой СС в 10-ую есть два способа. Пусть B - основание СС, d - цифра числа, X - число, n - количество цифр в числе. Математический способ: X10 = d1 * Bn-1 + d2 * Bn-2 + ... + dn 1AC416 = 1 * 163 + 10 * 162 + 12 * 161 + 4 * 160 = 685210 Итерационный способ: X10 = ((d1 * B + d2) * B + d3) * B + ... + dn 1AC416 = ((1 * 16 + 10) * 16 + 12) * 16 + 4 = 685210 Для перевода из 10-ой СС в любую другую можно предложить следующий алгоритм:
Пример:
1234510 = 303916 Примечание: При переводе в 2-ую СС из 10-ой рациональнее будет перевести число в 16-ую СС (меньше операций деления), а затем из 16-ой СС перевести в 2-ую с помощью ранее описанного способа. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотров: 13288 | Рейтинг: 5.0/2 |
Всего комментариев: 0 | |