Системы счисления и двоичная арифметика. Совокупность приемов наименования и записи чисел называется счислением. Условные знаки, применяемые для обозначения чисел называют цифрами. Системы счисления, в которых числа записывают как последовательность цифр, можно разбить на два класса: позиционные и непозиционные. В непозиционных системах значения цифр не изменяются при изменении их положения в последовательности. В качестве примера непозиционной системы приведем известную всем римскую систему счисления. В римской системе счисления символ x на любом месте равен 10, но в записи слева от старшего (например, XC) символ x равен -10, а в сочетании перед младшим (например, ХV) равен +10. В непозиционных системах счисления действия над числами связаны с большими трудностями и не имеют правил. В этих системах нельзя выразить отрицательные и дробные числа, поэтому непозиционные системы имеют ограниченное применение. В основном их используют для наименования дат, томов, глав и т. д. Напротив, в позиционных системах счисления количественное значение цифры в числе зависит от ее позиции. Наиболее важным обстоятельством для позиционной системы счисления является наличие основания системы счисления. Оно показывает, во сколько раз изменяется количественное значение цифры при перемещении на соседнюю позицию и какое число различных цифр входит в так называемый алфавит системы счисления. Основанием системы позиционной системы счисления является десятичная система, широко используемая в жизни. В качестве десятичных цифр применяются арабские цифры, а основание системы равно десяти, то есть оно равно отношению соседних разрядов. В р-ичной системе с основанием р (р-целое число больше 1) число записывается в виде последовательностей р-ичных цифр, разделенных запятой на две последовательности qn qn-1... q1q0, q-1 ...q-m Позиции, расположенные левее запятой пронумерованы справа налево числами 0,1,2,..., а справа от запятой пронумерованы подряд слева направо -1,-2,3 и т.д. Пронумерованные позиции называются разрядами. Таким образом, qn qn 1...q1q0 , q1...q m n q p i m i i (1.1) Последовательность цифр слева от запятой называется целой частью числа, а справа при нулевой целой называется дробной частью. В современных ЭВМ в настоящее время в основном используются позиционные системы счисления с основаниями 2, 8, 16 и 10, хотя были попытки, правда не совсем успешные, использования и других систем счисления (например, троичной). Основание в любой системе счисления изображается как 10, но оно имеет различное количественное значение. Наиболее просто осуществить перевод чисел из р-ичной позиционной системы счисления в t-ичную (или обратно), если имеет место соотношение p=tk, где к - целое положительное. В этом случае перевод из р-ичной системы счисления в t-ичную осуществляется поразрядно, заменяя каждую р-ичную цифру равным ей к-разрядным числом в t-ичной системе счисления. Разбивка числа на группы по к цифр осуществляется при движении от запятой влево и вправо, если при этом самая левая и правая группы окажутся неполными, то к ним приписывается необходимое количество нулей. Пример 1. Перевести двоичное число 1110101,1011111(2) в восьмеричную систему счисления. Так как 8=23 и к=3, то 001 110 101, 101 111 100=165,574(8) Пример 2. Перевести восьмеричное число 73,16(8) в двоичную систему счисления. 73,16(8)=111 011, 001 110=111011,00111(2) Пример 3. Перевести двоичное число 11100,01(2) в шестнадцатеричную систему счисления. Принимая во внимание, что 16=24 и к=4: 11100,01(2) = 0001 1100, 0100=1С,4(16) Так как только десять цифр из шестнадцати в шестнадцатеричной системе счисления имеют общепринятые обозначения, то для записи цифр 10, 11, 12, 13, 14 и 15 используются, соответственно, буквы A, B, C, D, E и F. Для быстрого перевода двоичного числа 1100 в шестнадцатеричную систему счисления можно воспользоваться следующим приемом 1100(2) = 1000+100=8+4=12(10)=С(16). Этим же приемом можно воспользоваться и при обратном переводе. С(16)=12(10)=8+4=1000+100=1100(2). Для этого надо лишь запомнить следующую таблицу для 2n 10 c/c 1 2 4 8 2 c/c 1 10 100 1000 Пример 4. Перевести число 1AF,4(16) в двоичную систему счисления. 1AF,4(16) = 0001 1010 1111, 0100= 110101111,01(2) Легко осуществляется также перевод из одной системы счисления в другую, если основания систем являются степенью 2. В этом случае перевод целесообразнее осуществить через двоичную систему счисления. Пример 5. Перевести число 76,5(8) из восьмеричной системы счисления в шестнадцатеричную. 76,5(8) = 111 110,101 = 0011 1110, 1010=3Е,А(16) Рассмотрим перевод целого числа В, записанного в р-ичной системе n счисления в t-ичную систему с основанием t. Очевидно, что b0 B bit i является i 1 остатком от деления числа В на t. Неполное частное при делении В на t имеем вид bn tn-1+bn-1 tn-2+...+b1, если разделить его на t, то в остатке получим b1. Повторяя аналогичные вычисления, получим последовательно все цифры числа В в t-ичной системе. При переводе дробной части числа В с нулевой целой частью из р-ичной системы в t-ичную систему, необходимо умножить его последовательно на t. В результате получим цифры дробного числа В в t-ичной системе счисления. Следует отметить, что, как правило, конечная дробная часть числа В в р-ичной системе счисления будет бесконечной дробью в t-ичной системе. В этом случае выписывают несколько разрядов или, если это возможно, выписывают период, характеризующий последовательность изменения цифр в дробной части числа. На практике при переводе из десятичной системы в двоичную и обратно иногда пользуются готовыми таблицами 2n. Пример 6. Перевести число 7142(10) из десятичной системы счисления в шестнадцатеричную систему счисления. Целое частное 7142 446 27 1 Основание 16 16 16 Остаток 6 14 11 1 Таким образом, 7142(10) = 1ВЕ6(16). Пример 7. Перевести число 0,225 из десятичной системы счисления в шестнадцатеричную систему счисления. Таким образом, получается бесконечная дробь с периодом 9 Ответ: 0,225(10)=0,3(9)(16) Пример 8. Перевести число 440 из десятичной системы счисления в двоичную. Для осуществления “быстрого” перевода целесообразно сначала перевести данное число в восьмеричную систему счисления (либо шестнадцатеричную), а затем в двоичную. Целое частное 440 55 7 Основание 8 8 Остаток 0 7 6 440(10)=670(8)=110 111 000= 110111000(2) Пример 9. Перевести число 110,175(10) из десятичной системы счисления в восьмеричную систему счисления. Сначала переводим целую часть числа, а затем дробную. 110 13 1 8 8 6 5 1 110(10) =156(8) 0,175*8=1,4 0,4*8=3,2! 0,2*8=1,6!период 0,6*8=4,8! 0,8*8=6,4! 0,4*8=3,2 Таким образом: 110,175(10) =156,1(3146)(8) Для уменьшения вычислений при переводе чисел из р-ой системы счисления в десятичную целесообразно пользоваться схемой Горнера, например, для числа вида (1.1) имеем целая часть = (...((qnp+qn-1)p+qn-2)p+qn-3)p+...+q1)p+q0 дробная часть=p-1(q-1+p-1(q-2+...+p-1(q-m+1+q-mp-1)...) (1.2) (1.3) Пример 10. Перевести число 9F3A из шестнадцатеричной системы счисления в десятичную. 9F3A(16)=((9*16+15)16+3)16+10=40762(10) В современных ЭВМ используются позиционные системы счисления с основаниями 2, 8, 10 и 16. Наименьшее число цифр имеет алфавит двоичной системы (0 и 1), поэтому она является одной из наиболее экономичных и простых для выполнения арифметических действий. Действия над числами с основаниями, отличными от 10, непривычны и поэтому вызывают определенные затруднения. Однако правила сложения, вычитания, умножения “столбиком” и деления “углом” применимы в любой системе счисления. Как и в десятичной системе счисления, при сложении чисел единица переноса в старший разряд появляется, если сумма цифр равна или больше основания p системы счисления. При вычитании чисел, если цифра уменьшаемого меньше цифры вычитаемого, то из старшего разряда занимается единица основания. Пример 11. Выполнить действия А+В, АСложение 1010 +101 -----1111 Вычитание 1010 -101 -----101 (2) В=101(2). Умножение Деление 1010 x101 ------1010 +1010 -----------110010 1010!101 !---------- 10 0 -101 Таким образом: А+В=1111(2), А-В=101(2), А*В=110010(2), А/В=10(2). Пример 12. А(16)=FA, B(16)=75. Найти А+В и А-В. FA FA +75 -75 --------16F 85 Пример 13. Выполнить следующие операции А+В, А-В, А*В, и А/В, если А=144(6), В=24(6) Выполнить самостоятельно! Пример 14. В лаборатории 35 компьютеров марки PC/AT и 22 компьютера марки PC/XT, всего 101 компьютер. В какой системе счисления записаны числа? Пусть p-неизвестное основание системы, тогда 3p+5p0+2p+2p0=p2+p0. 5p+6=p2, отсюда p2-5p-6=0, p1=6, p2=-1 посторонний корень. Таким образом, числа записаны в шестеричной системе счисления. Дополнительно § 1.4, § 43 Учебник информатики под редакцией Семакина. Базовый курс.