Двоичная система, являющаяся основой всей компьютерной арифметики, весьма громоздка и неудобна для использования человеком. Поэтому программисты пользуются двумя кратными двоичной системами счисления: восьмеричной и шестнадцатеричной. В случае шестнадцатеричной системы арабских цифр не хватает, и в качестве цифр используются первые шесть заглавных букв латинского алфавита.
Приведем в качестве примера запись натуральных чисел от единицы до шестнадцати в четырех системах счисления:
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 0 |
Первое слагаемое | 1 0 1 0 1 0 1 |
Второе слагаемое | 0 1 1 0 1 1 1 |
Сумма | 1 0 0 0 1 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:
Дописываемые единицы | 1 1 0 |
Первое слагаемое | 1 6 5 |
Второе слагаемое | 1 3 3 |
Сумма | 3 2 0 |
Обратите внимание, что во втором столбике 6+3+1 дает десять, что записывается как 128, двойка записывается на свое место, а единица подписывается сверху.
Кстати, среди приведенных вариантов ответа два содержат недопустимые в восьмеричной системе цифры 8 и 9.
Обратите внимание учеников, это один из способов проверки правильности записи чисел в позиционных системах счисления: проверить, все ли цифры принадлежат алфавиту этой системы.
Контрольный вопрос: Чему равна сумма чисел 2718 и 3278, записанная в восьмеричной системе?
6208
Задание 2.5:
Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11, соответственно). Если таким способом закодировать последовательность символов БАВГ и записать результат шестнадцатеричным кодом, то получится
4B
Это правильный ответ. По условию А кодируется как 00, Б – 01, В – 10, Г – 11, поэтому БАВГ будет закодировано как 010010112, что соответствует 4В16.


