6. Арифметические основы компьютера: системы счисления. Перевод чисел из
одной системы счисления в другую. Арифметические
операции в позиционных системах счисления.
Система счисления – принятый способ записи чисел и сопоставления этим записям реальных значений. Все системы счисления можно разделить на два класса: позиционные и непозиционные.
В непозиционных системах вес цифры (т.е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.
В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая – 7 единиц, а третья – 7 десятых долей единицы.
Любая позиционная система
счисления характеризуется своим основанием. Основание позиционной системы
счисления — это количество различных знаков
или символов, используемых для изображения цифр в данной системе.
За основание системы можно принять любое натуральное число — два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная и т.д. Запись чисел в каждой из систем счисления с основанием q означает сокращенную запись выражения an-1 qn-1 + an-2 qn-2+ ... + a1 q1 + a0 q0 + a-1 q-1 + ... + a -m q -m, где ai – цифры системы счисления; n и m – число целых и дробных разрядов, соответственно.
Например:
В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д. Продвижением цифры называют замену её следующей по величине. Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры – 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 – замену её на 0. Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё. Применяя это правило, запишем первые десять целых чисел
Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:
6.1.Почему люди пользуются десятичной
системой, а компьютеры — двоичной?
Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.
А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:
Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.
Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.
Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.
Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 – соответственно, третья и четвертая степени числа 2).
Перевод восьмеричных
и шестнадцатеричных чисел в двоичную систему очень
прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой
(тройкой цифр) или тетрадой (четверкой цифр).
Например:
Чтобы перевести число из двоичной
системы в восьмеричную или шестнадцатеричную, его нужно разбить
влево и вправо от запятой на триады (для восьмеричной) или тетрады
(для шестнадцатеричной) и каждую такую группу заменить соответствующей
восьмеричной (шестнадцатеричной) цифрой.
Например,
6.2. Как перевести целое число из десятичной системы в любую другую
позиционную систему счисления?
При переводе целого десятичного числа в систему с
основанием q его необходимо последовательно делить на q
до тех пор, пока не останется остаток, меньший или равный q–1. Число в
системе с основанием q записывается как последовательность остатков от
деления, записанных в обратном порядке, начиная с последнего.
Пример: Перевести число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
в двоичную в восьмеричную в шестнадцатеричную?
Ответ: 7510 = 1 001 0112 = 1138 = 4B16.
6.3. Как пеpевести пpавильную десятичную
дpобь в любую другую позиционную систему счисления?
Пpи переводе правильной
десятичной дpоби в систему счисления с основанием q необходимо
сначала саму дробь, а затем дробные части всех последующих произведений
последовательно умножать на q, отделяя после каждого
умножения целую часть пpоизведения. Число в новой системе счисления
записывается как последовательность полученных целых частей пpоизведения.
Умножение пpоизводится до тех поp, пока дpобная часть пpоизведения не станет pавной нулю. Это значит, что сделан точный пеpевод. В пpотивном случае пеpевод осуществляется до заданной точности. Достаточно того количества цифp в pезультате, котоpое поместится в ячейку.
Пример: Перевести число 0,35 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Ответ: 0,3510 = 0,010112 = 0,2638 = 0,5916 .
6.4. Как пеpевести число из двоичной
(восьмеpичной, шестнадцатеpичной) системы в десятичную?
При
переводе числа из двоичной (восьмеричной, шестнадцатеричной) системы в десятичную
надо это число представить в виде суммы степеней основания его системы
счисления.
Примеpы:
6.5. Как производятся арифметические операции в
позиционных системах счисления?
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
Сложение
Сложение в двоичной системе |
Сложение в восьмеричной системе |
Сложение в шестнадцатиричной системе.
При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево.
Пример 1. Сложим числа 15 и 6 в различных системах счисления.
Шестнадцатеричная: F16+616
|
Ответ: 15+6 = 2110 = 101012 = 258 = 1516. Проверка. Преобразуем полученные суммы к десятичному виду: |
Пример 2. Сложим числа 15, 7 и 3.
Шестнадцатеричная: F16+716+316
|
Ответ: 5+7+3 = 2510 = 110012 = 318 = 1916. Проверка:
|
Пример 3. Сложим числа 141,5 и 59,75.
Ответ: 141,5 + 59,75 = 201,2510 = 11001001,012 = 311,28 = C9,416
Проверка. Преобразуем полученные суммы к десятичному виду:
11001001,012 = 27 + 26 + 23 + 20
+ 2-2 = 201,25
311,28 = 3*82 + 1•81 + 1*80 + 2*8-1
= 201,25
C9,416 = 12*161 + 9*160 + 4*16-1 =
201,25
Пример 4. Вычтем единицу из чисел 102, 108 и 1016
Пример 5. Вычтем единицу из чисел 1002, 1008 и 10016.
Пример 6. Вычтем число 59,75 из числа 201,25.
Ответ: 201,2510 – 59,7510 = 141,510 = 10001101,12 = 215,48 = 8D,816.
Проверка. Преобразуем полученные разности к десятичному виду:
10001101,12 = 27 + 23 + 22 + 20
+ 2–1 = 141,5;
215,48 = 2*82 + 1*81 + 5*80 + 4*8–1
= 141,5;
8D,816 = 8*161 + D*160 + 8*16–1 =
141,5.
Выполняя умножение многозначных чисел в различных позиционных системах счисления, можно использовать обычный алгоритм перемножения чисел в столбик, но при этом результаты перемножения и сложения однозначных чисел необходимо заимствовать из соответствующих рассматриваемой системе таблиц умножения и сложения.
Умножение в двоичной системе |
Умножение в восьмеричной системе |
Ввиду чрезвычайной простоты таблицы умножения в двоичной системе, умножение сводится лишь к сдвигам множимого и сложениям.
Пример 7. Перемножим числа 5 и 6.
Ответ: 5*6 = 3010 = 111102 = 368.
Проверка. Преобразуем полученные произведения к десятичному виду:
111102 = 24 + 23 + 22 + 21
= 30;
368 = 3•81 + 6•80 = 30.
Пример 8. Перемножим числа 115 и 51.
Ответ: 115*51 = 586510 = 10110111010012 = 133518.
Проверка. Преобразуем полученные произведения к десятичному виду:
10110111010012 = 212 + 210 + 29 + 27
+ 26 + 25 + 23 + 20 = 5865;
133518 = 1*84 + 3*83 + 3*82 + 5*81
+ 1*80 = 5865.
Деление в любой позиционной системе счисления производится по тем же правилам, как и деление углом в десятичной системе. В двоичной системе деление выполняется особенно просто, ведь очередная цифра частного может быть только нулем или единицей.
Пример 9. Разделим число 30 на число 6.
Ответ: 30 : 6 = 510 = 1012 = 58.
Пример 10. Разделим число 5865 на число 115.
Восьмеричная: 133518 :1638
Ответ: 5865 : 115 = 5110 = 1100112 = 638.
Проверка. Преобразуем полученные частные к десятичному виду:
1100112 = 25 + 24 + 21 + 20
= 51; 638 = 6*81 + 3*80 = 51.
Пример 11. Разделим число 35 на число 14.
Восьмеричная: 438 : 168
Ответ: 35 : 14 = 2,510 = 10,12 = 2,48.
Проверка. Преобразуем полученные частные к десятичному виду:
10,12
= 21 + 2 -1 = 2,5;
2,48 = 2*80 + 4*8-1
= 2,5.