Двоичная система, являющаяся основой всей компьютерной арифметики, весьма громоздка и неудобна для использования человеком. Поэтому программисты пользуются двумя кратными двоичной системами счисления: восьмеричной и шестнадцатеричной. В случае шестнадцатеричной системы арабских цифр не хватает, и в качестве цифр используются первые шесть заглавных букв латинского алфавита. Приведем в качестве примера запись натуральных чисел от единицы до шестнадцати в четырех системах счисления: 10- 2-чная 8-чная 16чная чная 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 Видно, что в двоичной системе запись чисел второй восьмерки чисел (от 8 до 15) отличается от записи первой восьмерки (от 0 до 7) наличием единицы в четвертом (справа) разряде. На этом основан алгоритм перевода двоичных чисел в восьмеричные «по триадам». Для применения этого алгоритма надо разбить двоичное число на тройки цифр (естественно, отсчитывая справа) и записать вместо каждой из троек восьмеричную цифру: 101011012 → 10 101 101 → 2 5 5 → 2558. Крайняя левая тройка может быть неполной (как в примере), это не мешает реализации алгоритма. Для получения полных троек можно приписать слева недостающие незначащие нули (010 = 10 независимо от системы счисления). Убедимся в правильности алгоритма: 101011012 = 128+32+8+4+1 = 17310; 2558 = 2·64+5·8+5·1 = 128+40+5 = 17310. Для перевода чисел из восьмеричной системы в двоичную используется обратный алгоритм: восьмеричные цифры заменяются на тройки двоичных цифр (при необходимости слева дописываются недостающие нули): 3258 → 3 2 5 → 11 010 101 → 110101012. В десятичной системе это число будет записано как 213. Задание 2.1: Переведите число 11001011 в восьмеричную систему 313 Для перевода чисел из двоичной системы в шестнадцатеричную используется алгоритм «по тетрадам». Строка двоичных цифр разбивается на четверки и вместо них записываются шестнадцатеричные цифры: 101011012 → 1010 1101 → A D → AD16. Еще раз проверим правильность вычислений: 10·16 + 13 = 173. Аналогично работает и обратный алгоритм: вместо шестнадцатеричных цифр подставляются четверки двоичных цифр. 213 = 208 + 5 = 13·16 + 5 = 128 + 64 + 16 + 4 + 1. Увидим, что результат выполнения алгоритма тот же: D516 → D 5 → 1101 0101 → 110101012. Очень важно не забывать дописывать недостающие нули слева при переводе каждой цифры, чтобы получалась полноценная четверка или тройка двоичных цифр! Задание 2.2: Переведите в двоичную систему число A416 10100100 Арифметические операции в позиционных системах счисления производятся по единому алгоритму. Так, сложение двоичных чисел происходит по классическому алгоритму «столбиком» с переносом двойки в следующий разряд. Покажем этот алгоритм на примере двух двоичных чисел 10101012 и 1101112: Дописываемые 1 единицы Первое 1 слагаемое Второе 0 слагаемое Сумма 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 Результат сложения выглядит как 100011002. Проверим результат нашего сложения, для чего переведем все числа в десятичную систему: 10101012 = 8510, 1101112 = 5510, 100011002 = 14010, что действительно представляет собой результат сложения 55 и 85. При сложении чисел, представленных в кратной двоичной системах, можно пользоваться как двоичной, так и любой кратной системой. Лучше всего переводить числа в ту систему, в которой требуется представить ответ. Задание 2.3: Сложите числа 3278 и A316. Результат представьте в шестнадцатиричной системе. 17A Задание 2.3: Сложите числа 3278 и A316. Результат представьте в шестнадцатиричной системе. Решение. Переведем число 3278 в шестнадцатиричную систему (через двоичную): 3278 -> 3 2 7 -> 11 010 111 -> 110101112 -> 1101 0111 -> D 7 -> D716 Теперь выполним сложение по разрядам: 7 + 3 = 10 = A16; D16 + A16 = 13 + 10 = 23 = 1716 Записав цифры подряд получаем ответ: 17A16 Для перехода к следующей странице выберите ответ на задание в двоичной системе. 101111010 Задание 2.4: Вычислите сумму чисел x и y, если x=11101012; y=10110112. Результат представьте в виде восьмеричного числа. 320 Решение: Существует два способа вычисления искомой суммы. Первый способ – сложить числа по правилам сложения двоичных чисел (столбиком, как показано выше), а результат перевести в восьмеричную запись, разбив на триады: 11101012 + 10110112 = 110100002 → 11 010 000 → 3 2 0 → 3208. Второй способ состоит в том, чтобы сначала перевести числа в восьмеричную систему, а потом сложить их: 11101012 → 1 110 101 → 1 6 5 → 1658; 10110112 → 1 011 011 → 1 3 3 → 1338. Теперь столбиком сложим восьмеричные числа 1658 + 1338: Дописываемые единицы 110 Первое слагаемое Второе слагаемое Сумма 165 133 320 Обратите внимание, что во втором столбике 6+3+1 дает десять, что записывается как 128, двойка записывается на свое место, а единица подписывается сверху. Кстати, среди приведенных вариантов ответа два содержат недопустимые в восьмеричной системе цифры 8 и 9. Обратите внимание учеников, это один из способов проверки правильности записи чисел в позиционных системах счисления: проверить, все ли цифры принадлежат алфавиту этой системы. Контрольный вопрос: Чему равна сумма чисел 2718 и 3278, записанная в восьмеричной системе? 6208 Задание 2.5: Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11, соответственно). Если таким способом закодировать последовательность символов БАВГ и записать результат шестнадцатеричным кодом, то получится 4B Это правильный ответ. По условию А кодируется как 00, Б – 01, В – 10, Г – 11, поэтому БАВГ будет закодировано как 010010112, что соответствует 4В16.