Глава 4 — Арифметические основы компьютеров

Глава 4. Арифметические основы компьютеров

4.1. Что такое система счисления?

Система счисления — это совокупность приемов и правил, по которым числа записываются и читаются.

Существуют позиционные и непозиционные системы счисления.

В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая — 7 единиц, а третья — 7 десятых долей единицы.

Сама же запись числа 757,7 означает сокращенную запись выражения

700 + 50 + 7 + 0,7 = 7 . 102 + 5 . 101 + 7 . 100 + 7 . 10—1 = 757,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 — число целых и дробных разрядов, соответственно.
Например:

4.2. Как порождаются целые числа в позиционных системах счисления?

В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д.

Продвижением цифры называют замену её следующей по величине.

Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры — 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 — замену её на 0.

Целые числа в любой системе счисления порождаются с помощью Правила счета [44]:

Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё.

Применяя это правило, запишем первые десять целых чисел

  • в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;
  • в троичной системе: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100;
  • в пятеричной системе: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14;
  • в восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.

4.3. Какие системы счисления используют специалисты для общения с компьютером?

Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:

  • двоичная (используются цифры 0, 1);
  • восьмеричная (используются цифры 0, 1, ..., 7);
  • шестнадцатеричная (для первых целых чисел от нуля до девяти используются цифры 0, 1, ..., 9, а для следующих чисел — от десяти до пятнадцати — в качестве цифр используются символы A, B, C, D, E, F).
Полезно запомнить запись в этих системах счисления первых двух десятков целых чисел:
10-я | 2-я | 8-я | 16-я
0 | 0 | 0 | 0
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-я | 2-я | 8-я | 16-я
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
17 | 10001 | 21 | 11
18 | 10010 | 22 | 12
19 | 10011 | 23 | 13

Из всех систем счисления особенно проста и поэтому интересна для технической реализации в компьютерах двоичная система счисления.

4.4. Почему люди пользуются десятичной системой, а компьютеры — двоичной?

Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.

А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:

  • для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной;
  • представление информации посредством только двух состояний надежно и помехоустойчиво;
  • возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;
  • двоичная арифметика намного проще десятичной.
Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.

4.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?

Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.

Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.

Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 — соответственно, третья и четвертая степени числа 2).

Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

Например:

Чтобы перевести число из двоичной системы в восьмеричную или шестнадцатеричную, его нужно разбить влево и вправо от запятой на триады (для восьмеричной) или тетрады (для шестнадцатеричной) и каждую такую группу заменить соответствующей восьмеричной (шестнадцатеричной) цифрой.

Например,

4.6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?

Для перевода целого десятичного числа N в систему счисления с основанием q необходимо N разделить с остатком ("нацело") на q , записанное в той же десятичной системе. Затем неполное частное, полученное от такого деления, нужно снова разделить с остатком на q , и т.д., пока последнее полученное неполное частное не станет равным нулю. Представлением числа N в новой системе счисления будет последовательность остатков деления, изображенных одной q-ичной цифрой и записанных в порядке, обратном порядку их получения.

Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

Ответ: 7510 = 1 001 0112 = 1138 = 4B16.

4.7. Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления?

Для перевода правильной десятичной дpоби F в систему счисления с основанием q необходимо F умножить на q , записанное в той же десятичной системе, затем дробную часть полученного произведения снова умножить на q, и т. д., до тех пор, пока дpобная часть очередного пpоизведения не станет pавной нулю, либо не будет достигнута требуемая точность изображения числа F в q-ичной системе. Представлением дробной части числа F в новой системе счисления будет последовательность целых частей полученных произведений, записанных в порядке их получения и изображенных одной q-ичной цифрой. Если требуемая точность перевода числа F составляет k знаков после запятой, то предельная абсолютная погрешность при этом равняется q -(k+1) / 2.

Пример. Переведем число 0,36 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

Для чисел, имеющих как целую, так и дробную части, перевод из десятичной системы счисления в другую осуществляется отдельно для целой и дробной частей по правилам, указанным выше.

4.8. Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную?

Перевод в десятичную систему числа x, записанного в q-ичной cистеме счисления (q = 2, 8 или 16) в виде xq = (anan-1 ... a0 , a-1 a-2 ... a-m)q сводится к вычислению значения многочлена
x10 = an qn + an-1 qn-1 + ... + a0 q0 + a-1 q -1 + a-2 q-2 + ... + a-m q-m

средствами десятичной арифметики.

Примеpы:

4.9. Сводная таблица переводов целых чисел из одной системы счисления в другую

Рассмотрим только те системы счисления, которые применяются в компьютерах — десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком:

На этом рисунке использованы следующие обозначения:

  • в кружках записаны основания систем счисления;
  • стрелки указывают направление перевода;
  • номер рядом со стрелкой означает порядковый номер соответствующего примера в сводной таблице 4.1.
Например: означает перевод из двоичной системы в шестнадцатеричную, имеющий в таблице порядковый номер 6.
Сводная таблица переводов целых чисел
Таблица 4.1.

4.10. Как производятся арифметические операции в позиционных системах счисления?

Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.

С л о ж е н и е

Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе

Сложение в восьмеричной системе

Сложение в шестнадцатиричной системе

При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево.

Пример 1. Сложим числа 15 и 6 в различных системах счисления.

Шестнадцатеричная: F16+616

Ответ: 15+6 = 2110 = 101012 = 258 = 1516.
Проверка. Преобразуем полученные суммы к десятичному виду:
101012 = 24 + 22 + 20 = 16+4+1=21,
258 = 2 . 81 + 5 . 80 = 16 + 5 = 21,
1516 = 1 . 161 + 5 . 160 = 16+5 = 21.

Пример 2. Сложим числа 15, 7 и 3.

Шестнадцатеричная: F16+716+316

Ответ: 5+7+3 = 2510 = 110012 = 318 = 1916.
Проверка:
110012 = 24 + 23 + 20 = 16+8+1=25,
318 = 3 . 81 + 1 . 80 = 24 + 1 = 25,
1916 = 1 . 161 + 9 . 160 = 16+9 = 25.

Пример 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 + 181 + 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 = 381 + 680 = 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.

4.11. Как представляются в компьютере целые числа?

Целые числа могут представляться в компьютере со знаком или без знака.

Целые числа без знака

Обычно занимают в памяти компьютера один или два байта. В однобайтовом формате принимают значения от 000000002 до 111111112. В двубайтовом формате - от 00000000 000000002 до 11111111 111111112.

Диапазоны значений целых чисел без знака

Формат числа в байтах | Диапазон
 | Запись с порядком | Обычная запись
1 | 0 ... 28-1 | 0 ... 255
2 | 0 ... 216-1 | 0 ... 65535

Примеры:

а) число 7210 = 10010002 в однобайтовом формате:

б) это же число в двубайтовом формате:

в) число 65535 в двубайтовом формате:

Целые числа со знаком

Обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа.

Диапазоны значений целых чисел со знаком

Формат числа в байтах | Диапазон
 | Запись с порядком | Обычная запись
1 | -27 ... 27-1 | -128 ... 127
2 | -215 ... 215-1 | -32768 ... 32767
4 | -231 ... 231-1 | -2147483648 ... 2147483647

Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины - семь разрядов.

В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком:
прямой код, обратный код, дополнительный код.

Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения.

Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково - двоичными кодами с цифрой 0 в знаковом разряде. Например:

Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.

1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины. Например:

2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы — нулями. Например:

3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду. Например:

Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.

4.12. Как компьютер выполняет арифметические действия над целыми числами?

Сложение и вычитание

В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.

Сложение обратных кодов. Здесь при сложении чисел А и В имеют место четыре основных и два особых случая:

1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:

Получен правильный результат.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = -710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:

Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы.

4. А и В отрицательные. Например:

Полученный первоначально неправильный результат (обратный код числа -1110 вместо обратного кода числа -1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = -1010.

При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения.

5. А и В положительные, сумма А+В больше, либо равна 2n-1, где n — количество разрядов формата чисел (для однобайтового формата n=8, 2n-1 = 27 = 128). Например:

Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.

6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n-1. Например:

Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.

Сложение дополнительных кодов. Здесь также имеют место рассмотренные выше шесть случаев:

1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = -710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:

Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.

4. А и В отрицательные. Например:

Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает.

Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.

Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:

  • на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов — образования обратного кода и прибавления единицы к его младшему разряду;
  • время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата.
Умножение и деление

Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.

Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Для иллюстрации умножим 1100112 на 1011012.

Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.

4.13. Как представляются в компьютере вещественные числа?

Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, т.е. не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. В следствие этого система вещественных чисел, представимых в машине, является дискретной (прерывной) и конечной.

При написании вещественных чисел в программах вместо привычной запятой принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими, так и очень большими, используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 в этой форме можно представить так:

1.25 . 100 = 0.125 . 101 = 0.0125 . 102 = ...

или так:
12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = ... .

Любое число N в системе счисления с основанием q можно записать в виде N = M . qp, где M — множитель, содержащий все цифры числа (мантисса), а p — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.

Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:

Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12 <= |M| < 1. Если это требование выполнено, то число называется нормализованным

Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе. Примеры нормализованного представления:

Десятичная система Двоичная система
753.15 = 0.75315 . 103; —101.01 = —0.10101 . 211 (порядок 112 = 310)
— 0.000034 = — 0.34 . 10-4; 0.000011 = 0.11 . 2-100 (порядок —1002 = —410).

Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:

Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.

Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел:

1) одинарный — 32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.

4.14. Как компьютер выполняет арифметические действия над нормализованными числами?

К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.

Сложение и вычитание

При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.

В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу.

В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу.

Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2-1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:

Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101 . 20.

Умножение

При умножении двух нормализованных чисел их порядки складываются, а мантиссы перемножаются.

Пример 3. Выполнить умножение двоичных нормализованных чисел:

(0.11101 . 2101) . (0.1001 . 211) = (0.11101 . 0.1001) . 2(101+11) = 0.100000101 . 21000.

Деление

При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется.

Пример 4. Выполнить деление двоичных нормализованных чисел:

0.1111 . 2100 : 0.101 . 211 = (0.1111 : 0.101) . 2(100-11) = 1.1 . 21 = 0.11 . 210.

Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства.

4.15. Упражнения

4.1. Используя Правило Счета, запишите первые 20 целых чисел в десятичной, двоичной, троичной, пятеричной и восьмеричной системах счисления.
[ Ответ ]

4.2. Какие целые числа следуют за числами:
а) 12; | е) 18; | п) F16;
б) 1012; | ж) 78; | м) 1F16;
в) 1112; | з) 378; | н) FF16;
г) 11112; | и) 1778; | о) 9AF916;
д) 1010112; | к) 77778; | п) CDEF16 ?

[ Ответ ]

4.3. Какие целые числа предшествуют числам:
а) 102; | е) 108; | л) 1016;
б) 10102; | ж) 208; | м)2016;
в) 10002; | з) 1008; | н) 10016;
г) 100002; | и) 1108; | о) A1016;
д) 101002; | к) 10008; | п) 100016 ?

[ Ответ ]

4.4. Какой цифрой заканчивается четное двоичное число? Какой цифрой заканчивается нечетное двоичное число? Какими цифрами может заканчиваться четное троичное число?
[ Ответ ]

4.5. Какое наибольшее десятичное число можно записать тремя цифрами:

  • а) в двоичной системе;
  • б) в восьмеричной системе;
  • в) в шестнадцатеричной системе?
[ Ответ ]

4.6. В какой системе счисления 21 + 24 = 100?
Решение. Пусть x — искомое основание системы счисления. Тогда 100x = 1 · x2 + 0 · x1 + 0 · x0, 21x = 2 · x1 + 1 · x0, 24x = 2 · x1 + 4 · x0. Таким образом, x2 = 2x + 2x + 5 или x2 - 4x - 5 = 0. Положительным корнем этого квадратного уравнения является x = 5.
Ответ. Числа записаны в пятеричной системе счисления.

4.7. В какой системе счисления справедливо следующее:

  • а) 20 + 25 = 100;
  • б) 22 + 44 = 110?
[ Ответ ]

4.8. Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы.

[ Ответ ]

4.9. Переведите числа в десятичную систему, а затем проверьте результаты, выполнив обратные переводы:
а) 10110112; | е) 5178; | л) 1F16;
б) 101101112; | ж) 10108; | м) ABC16;
в) 0111000012; | з) 12348; | н) 101016;
г) 0,10001102; | и) 0,348; | о) 0,А416;
д) 110100,112; | к) 123,418; | п) 1DE,C816.

[ Ответ ]

4.10. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:

а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510.

[ Ответ ]

4.11. Переведите числа из двоичной системы в восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
а) 1001111110111,01112; | г) 1011110011100,112;
б) 1110101011,10111012; | д) 10111,11111011112;
в) 10111001,1011001112; | е) 1100010101,110012.

[ Ответ ]

4.12. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа:

а) 2СE16; б) 9F4016; в) ABCDE16; г) 1010,10116; д) 1ABC,9D16.
[ Ответ ]

4.13. Выпишите целые числа:

  • а) от 1011012 до 1100002 в двоичной системе;
  • б) от 2023 до 10003 в троичной системе;
  • в) от 148 до 208 в восьмеричной системе;
  • г) от 2816 до 3016 в шестнадцатеричной системе.
[ Ответ ]

4.14. Для десятичных чисел 47 и 79 выполните цепочку переводов из одной системы счисления в другую:

[ Ответ ]

4.15. Составьте таблицы сложения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.16. Составьте таблицы умножения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.17. Сложите числа, а затем проверьте результаты, выполнив соответствующие десятичные сложения:
а) 10111012 и 11101112; | д) 378 и 758; | и) A16 и F16;
б) 1011,1012 и 101,0112; | е) 1658 и 378; | к) 1916 и C16;
в) 10112, 112 и 111,12; | ж) 7,58 и 14,68; | л) A,B16 и E,F16;
г) 10112 , 11,12 и 1112; | з) 68, 178 и 78; | м) E16, 916 и F16.

[ Ответ ]

4.18. В каких системах счисления выполнены следующие сложения? Найдите основания каждой системы:

[ Ответ ]

4.19. Найдите те подстановки десятичных цифр вместо букв, которые делают правильными выписанные результаты (разные цифры замещаются разными буквами):

[ Ответ ]

4.20. Вычтите:
а) 1112 из 101002; | д) 158 из 208; | и) 1А16 из 3116;
б) 10,112 из 100,12; | е) 478 из 1028; | к) F9E16 из 2А3016;
в) 111,12 из 100102; | ж) 56,78 из 1018; | л) D,116 из B,9216;
г) 100012 из 1110,112; | з) 16,548 из 30,018; | м) ABC16 из 567816.

[ Ответ ]

4.21. Перемножьте числа, а затем проверьте результаты, выполнив соответствующие десятичные умножения:
а) 1011012 и 1012; | д) 378 и 48;
б) 1111012 и 11,012; | е) 168 и 78;
в) 1011,112 и 101,12; | ж) 7,58 и 1,68;
г) 1012 и 1111,0012; | з) 6,258 и 7,128.

[ Ответ ]

4.22. Разделите 100101102 на 10102 и проверьте результат, умножая делитель на частное.
[ Ответ ]

4.23. Разделите 100110101002 на 11002 и затем выполните соответствующее десятичное и восьмеричное деление.
[ Ответ ]

4.24. Вычислите значения выражений:

  • а) 2568 + 10110,12 . (608 + 1210) - 1F16;
  • б) 1AD16 - 1001011002 : 10102 + 2178;
  • в) 101010 + (10616 - 110111012)  128;
  • г) 10112 . 11002 : 148 + (1000002 - 408).
[ Ответ ]

4.25. Расположите следующие числа в порядке возрастания:

  • а) 748, 1100102, 7010, 3816;
  • б) 6E16, 1428, 11010012, 10010;
  • в) 7778, 1011111112, 2FF16, 50010;
  • г) 10010, 11000002, 6016, 1418.
[ Ответ ]

4.26. Запишите уменьшающийся ряд чисел +3, +2, ..., -3 в однобайтовом формате:

  • а) в прямом коде;
  • б) в обратном коде;
  • в) в дополнительном коде.
[ Ответ ]

4.27. Запишите числа в прямом коде (формат 1 байт):

а) 31; б) -63; в) 65; г) -128.
[ Ответ ]

4.28. Запишите числа в обратном и дополнительном кодах (формат 1 байт):

а) -9; б) -15; в) -127; г) -128.
[ Ответ ]

4.29. Найдите десятичные представления чисел, записанных в дополнительном коде:

а) 1 1111000; б) 1 0011011; в) 1 1101001; г) 1 0000000.
[ Ответ ]

4.30. Найдите десятичные представления чисел, записанных в обратном коде:

а) 1 1101000; б) 1 0011111; в) 1 0101011; г) 1 0000000.
[ Ответ ]

4.31. Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
а) 9 - 2; | г) -20 - 10; | ж) -120 - 15;
б) 2 - 9; | д) 50 - 25; | з) -126 - 1;
в) -5 - 7; | е) 127 - 1; | и) -127 - 1.

[ Ответ ]


Глава 4. Арифметические основы компьютеров

Содержание:
  • 4.1. Что такое система счисления?
  • 4.2. Как порождаются целые числа в позиционных системах счисления?
  • 4.3. Какие системы счисления используют специалисты для общения с компьютером?
  • 4.4. Почему люди пользуются десятичной системой, а компьютеры — двоичной?
  • 4.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?
  • 4.6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?
  • 4.7. Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления?
  • 4.8. Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную?
  • 4.9. Сводная таблица переводов целых чисел из одной системы счисления в другую
  • 4.10. Как производятся арифметические операции в позиционных системах счисления?
  • 4.11. Как представляются в компьютере целые числа?
  • 4.12. Как компьютер выполняет арифметические действия над целыми числами?
  • 4.13. Как представляются в компьютере вещественные числа?
  • 4.14. Как компьютер выполняет арифметические действия над нормализованными числами?
  • 4.15. Упражнения
  • Вся глава целиком.
  • Предыдущая глава.
  • Следующая глава.


4.1. Что такое система счисления?

Система счисления — это совокупность приемов и правил, по которым числа записываются и читаются.

Существуют позиционные и непозиционные системы счисления.

В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая — 7 единиц, а третья — 7 десятых долей единицы.

Сама же запись числа 757,7 означает сокращенную запись выражения

700 + 50 + 7 + 0,7 = 7 . 102 + 5 . 101 + 7 . 100 + 7 . 10-1 = 757,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 — число целых и дробных разрядов, соответственно.
Например:


4.2. Как порождаются целые числа в позиционных системах счисления?

В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д.

Продвижением цифры называют замену её следующей по величине.

Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры — 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 — замену её на 0.

Целые числа в любой системе счисления порождаются с помощью Правила счета [44]:

Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё.

Применяя это правило, запишем первые десять целых чисел

  • в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;
  • в троичной системе: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100;
  • в пятеричной системе: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14;
  • в восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.


4.3. Какие системы счисления используют специалисты для общения с компьютером?

Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:

  • двоичная (используются цифры 0, 1);
  • восьмеричная (используются цифры 0, 1, ..., 7);
  • шестнадцатеричная (для первых целых чисел от нуля до девяти используются цифры 0, 1, ..., 9, а для следующих чисел — от десяти до пятнадцати — в качестве цифр используются символы A, B, C, D, E, F).
Полезно запомнить запись в этих системах счисления первых двух десятков целых чисел:
10-я | 2-я | 8-я | 16-я
0 | 0 | 0 | 0
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-я | 2-я | 8-я | 16-я
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
17 | 10001 | 21 | 11
18 | 10010 | 22 | 12
19 | 10011 | 23 | 13

Из всех систем счисления особенно проста и поэтому интересна для технической реализации в компьютерах двоичная система счисления.


4.4. Почему люди пользуются десятичной системой, а компьютеры — двоичной?

Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.

А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:

  • для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной;
  • представление информации посредством только двух состояний надежно и помехоустойчиво;
  • возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;
  • двоичная арифметика намного проще десятичной.
Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.


4.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?

Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.

Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.

Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 — соответственно, третья и четвертая степени числа 2).

Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

Например:

Чтобы перевести число из двоичной системы в восьмеричную или шестнадцатеричную, его нужно разбить влево и вправо от запятой на триады (для восьмеричной) или тетрады (для шестнадцатеричной) и каждую такую группу заменить соответствующей восьмеричной (шестнадцатеричной) цифрой.

Например,


4.6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?

Для перевода целого десятичного числа N в систему счисления с основанием q необходимо N разделить с остатком ("нацело") на q , записанное в той же десятичной системе. Затем неполное частное, полученное от такого деления, нужно снова разделить с остатком на q , и т.д., пока последнее полученное неполное частное не станет равным нулю. Представлением числа N в новой системе счисления будет последовательность остатков деления, изображенных одной q-ичной цифрой и записанных в порядке, обратном порядку их получения.

Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

Ответ: 7510 = 1 001 0112 = 1138 = 4B16.


4.7. Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления?

Для перевода правильной десятичной дpоби F в систему счисления с основанием q необходимо F умножить на q , записанное в той же десятичной системе, затем дробную часть полученного произведения снова умножить на q, и т. д., до тех пор, пока дpобная часть очередного пpоизведения не станет pавной нулю, либо не будет достигнута требуемая точность изображения числа F в q-ичной системе. Представлением дробной части числа F в новой системе счисления будет последовательность целых частей полученных произведений, записанных в порядке их получения и изображенных одной q-ичной цифрой. Если требуемая точность перевода числа F составляет k знаков после запятой, то предельная абсолютная погрешность при этом равняется q -(k+1) / 2.

Пример. Переведем число 0,36 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:

Для чисел, имеющих как целую, так и дробную части, перевод из десятичной системы счисления в другую осуществляется отдельно для целой и дробной частей по правилам, указанным выше.


4.8. Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную?

Перевод в десятичную систему числа x, записанного в q-ичной cистеме счисления (q = 2, 8 или 16) в виде xq = (anan-1 ... a0 , a-1 a-2 ... a-m)q сводится к вычислению значения многочлена
x10 = an qn + an-1 qn-1 + ... + a0 q0 + a-1 q -1 + a-2 q-2 + ... + a-m q-m

средствами десятичной арифметики.

Примеpы:


4.9. Сводная таблица переводов целых чисел из одной системы счисления в другую

Рассмотрим только те системы счисления, которые применяются в компьютерах — десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком:

На этом рисунке использованы следующие обозначения:

  • в кружках записаны основания систем счисления;
  • стрелки указывают направление перевода;
  • номер рядом со стрелкой означает порядковый номер соответствующего примера в сводной таблице 4.1.
Например: означает перевод из двоичной системы в шестнадцатеричную, имеющий в таблице порядковый номер 6.
Сводная таблица переводов целых чисел
Таблица 4.1.


4.10. Как производятся арифметические операции в позиционных системах счисления?

Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.

С л о ж е н и е

Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе

Сложение в восьмеричной системе

Сложение в шестнадцатиричной системе

При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево.

Пример 1. Сложим числа 15 и 6 в различных системах счисления.

Шестнадцатеричная: F16+616

Ответ: 15+6 = 2110 = 101012 = 258 = 1516.
Проверка. Преобразуем полученные суммы к десятичному виду:
101012 = 24 + 22 + 20 = 16+4+1=21,
258 = 2 . 81 + 5 . 80 = 16 + 5 = 21,
1516 = 1 . 161 + 5 . 160 = 16+5 = 21.

Пример 2. Сложим числа 15, 7 и 3.

Шестнадцатеричная: F16+716+316

Ответ: 5+7+3 = 2510 = 110012 = 318 = 1916.
Проверка:
110012 = 24 + 23 + 20 = 16+8+1=25,
318 = 3 . 81 + 1 . 80 = 24 + 1 = 25,
1916 = 1 . 161 + 9 . 160 = 16+9 = 25.

Пример 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 + 181 + 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 = 381 + 680 = 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.


4.11. Как представляются в компьютере целые числа?

Целые числа могут представляться в компьютере со знаком или без знака.

Целые числа без знака

Обычно занимают в памяти компьютера один или два байта. В однобайтовом формате принимают значения от 000000002 до 111111112. В двубайтовом формате — от 00000000 000000002 до 11111111 111111112.

Диапазоны значений целых чисел без знака

Формат числа в байтах | Диапазон
 | Запись с порядком | Обычная запись
1 | 0 ... 28–1 | 0 ... 255
2 | 0 ... 216–1 | 0 ... 65535

Примеры:

а) число 7210 = 10010002 в однобайтовом формате:

б) это же число в двубайтовом формате:

в) число 65535 в двубайтовом формате:

Целые числа со знаком

Обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа.

Диапазоны значений целых чисел со знаком

Формат числа в байтах | Диапазон
 | Запись с порядком | Обычная запись
1 | –27 ... 27–1 | –128 ... 127
2 | –215 ... 215–1 | –32768 ... 32767
4 | –231 ... 231–1 | –2147483648 ... 2147483647

Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины – семь разрядов.

В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком:
прямой код, обратный код, дополнительный код.

Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения.

Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде. Например:

Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.

1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины. Например:

2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы — нулями. Например:

3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду. Например:

Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.


4.12. Как компьютер выполняет арифметические действия над целыми числами?

Сложение и вычитание

В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.

Сложение обратных кодов. Здесь при сложении чисел А и В имеют место четыре основных и два особых случая:

1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:

Получен правильный результат.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:

Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы.

4. А и В отрицательные. Например:

Полученный первоначально неправильный результат (обратный код числа –1110 вместо обратного кода числа –1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = –1010.

При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения.

5. А и В положительные, сумма А+В больше, либо равна 2n–1, где n — количество разрядов формата чисел (для однобайтового формата n=8, 2n–1 = 27 = 128). Например:

Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.

6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n–1. Например:

Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.

Сложение дополнительных кодов. Здесь также имеют место рассмотренные выше шесть случаев:

1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = –710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:

Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.

4. А и В отрицательные. Например:

Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает.

Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.

Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:

  • на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов — образования обратного кода и прибавления единицы к его младшему разряду;
  • время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата.
Умножение и деление

Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.

Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Для иллюстрации умножим 1100112 на 1011012.

Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.


4.13. Как представляются в компьютере вещественные числа?

Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, т.е. не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. В следствие этого система вещественных чисел, представимых в машине, является дискретной (прерывной) и конечной.

При написании вещественных чисел в программах вместо привычной запятой принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими, так и очень большими, используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 в этой форме можно представить так:

1.25 . 100 = 0.125 . 101 = 0.0125 . 102 = ...

или так:
12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = ... .

Любое число N в системе счисления с основанием q можно записать в виде N = M . qp, где M — множитель, содержащий все цифры числа (мантисса), а p — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.

Если “плавающая” точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:

Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12 <= |M| < 1. Если это требование выполнено, то число называется нормализованным

Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе. Примеры нормализованного представления:

Десятичная система Двоичная система
753.15 = 0.75315 . 103; —101.01 = —0.10101 . 211 (порядок 112 = 310)
— 0.000034 = — 0.34 . 10-4; 0.000011 = 0.11 . 2-100 (порядок —1002 = —410).

Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:

Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.

Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел:

1) одинарный — 32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.


4.14. Как компьютер выполняет арифметические действия над нормализованными числами?

К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.

Сложение и вычитание

При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.

В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу.

В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу.

Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2–1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:

Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101 . 20.

Умножение

При умножении двух нормализованных чисел их порядки складываются, а мантиссы перемножаются.

Пример 3. Выполнить умножение двоичных нормализованных чисел:

(0.11101 . 2101) . (0.1001 . 211) = (0.11101 . 0.1001) . 2(101+11) = 0.100000101 . 21000.

Деление

При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется.

Пример 4. Выполнить деление двоичных нормализованных чисел:

0.1111 . 2100 : 0.101 . 211 = (0.1111 : 0.101) . 2(100–11) = 1.1 . 21 = 0.11 . 210.

Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства.


4.15. Упражнения

4.1. Используя Правило Счета, запишите первые 20 целых чисел в десятичной, двоичной, троичной, пятеричной и восьмеричной системах счисления.
[ Ответ ]

4.2. Какие целые числа следуют за числами:
а) 12; | е) 18; | п) F16;
б) 1012; | ж) 78; | м) 1F16;
в) 1112; | з) 378; | н) FF16;
г) 11112; | и) 1778; | о) 9AF916;
д) 1010112; | к) 77778; | п) CDEF16 ?

[ Ответ ]

4.3. Какие целые числа предшествуют числам:
а) 102; | е) 108; | л) 1016;
б) 10102; | ж) 208; | м)2016;
в) 10002; | з) 1008; | н) 10016;
г) 100002; | и) 1108; | о) A1016;
д) 101002; | к) 10008; | п) 100016 ?

[ Ответ ]

4.4. Какой цифрой заканчивается четное двоичное число? Какой цифрой заканчивается нечетное двоичное число? Какими цифрами может заканчиваться четное троичное число?
[ Ответ ]

4.5. Какое наибольшее десятичное число можно записать тремя цифрами:

  • а) в двоичной системе;
  • б) в восьмеричной системе;
  • в) в шестнадцатеричной системе?
[ Ответ ]

4.6. В какой системе счисления 21 + 24 = 100?
Решение. Пусть x — искомое основание системы счисления. Тогда 100x = 1 · x2 + 0 · x1 + 0 · x0, 21x = 2 · x1 + 1 · x0, 24x = 2 · x1 + 4 · x0. Таким образом, x2 = 2x + 2x + 5 или x2 - 4x - 5 = 0. Положительным корнем этого квадратного уравнения является x = 5.
Ответ. Числа записаны в пятеричной системе счисления.

4.7. В какой системе счисления справедливо следующее:

  • а) 20 + 25 = 100;
  • б) 22 + 44 = 110?
[ Ответ ]

4.8. Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы.

[ Ответ ]

4.9. Переведите числа в десятичную систему, а затем проверьте результаты, выполнив обратные переводы:
а) 10110112; | е) 5178; | л) 1F16;
б) 101101112; | ж) 10108; | м) ABC16;
в) 0111000012; | з) 12348; | н) 101016;
г) 0,10001102; | и) 0,348; | о) 0,А416;
д) 110100,112; | к) 123,418; | п) 1DE,C816.

[ Ответ ]

4.10. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:

а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510.

[ Ответ ]

4.11. Переведите числа из двоичной системы в восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
а) 1001111110111,01112; | г) 1011110011100,112;
б) 1110101011,10111012; | д) 10111,11111011112;
в) 10111001,1011001112; | е) 1100010101,110012.

[ Ответ ]

4.12. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа:

а) 2СE16; б) 9F4016; в) ABCDE16; г) 1010,10116; д) 1ABC,9D16.
[ Ответ ]

4.13. Выпишите целые числа:

  • а) от 1011012 до 1100002 в двоичной системе;
  • б) от 2023 до 10003 в троичной системе;
  • в) от 148 до 208 в восьмеричной системе;
  • г) от 2816 до 3016 в шестнадцатеричной системе.
[ Ответ ]

4.14. Для десятичных чисел 47 и 79 выполните цепочку переводов из одной системы счисления в другую:

[ Ответ ]

4.15. Составьте таблицы сложения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.16. Составьте таблицы умножения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.17. Сложите числа, а затем проверьте результаты, выполнив соответствующие десятичные сложения:
а) 10111012 и 11101112; | д) 378 и 758; | и) A16 и F16;
б) 1011,1012 и 101,0112; | е) 1658 и 378; | к) 1916 и C16;
в) 10112, 112 и 111,12; | ж) 7,58 и 14,68; | л) A,B16 и E,F16;
г) 10112 , 11,12 и 1112; | з) 68, 178 и 78; | м) E16, 916 и F16.

[ Ответ ]

4.18. В каких системах счисления выполнены следующие сложения? Найдите основания каждой системы:

[ Ответ ]

4.19. Найдите те подстановки десятичных цифр вместо букв, которые делают правильными выписанные результаты (разные цифры замещаются разными буквами):

[ Ответ ]

4.20. Вычтите:
а) 1112 из 101002; | д) 158 из 208; | и) 1А16 из 3116;
б) 10,112 из 100,12; | е) 478 из 1028; | к) F9E16 из 2А3016;
в) 111,12 из 100102; | ж) 56,78 из 1018; | л) D,116 из B,9216;
г) 100012 из 1110,112; | з) 16,548 из 30,018; | м) ABC16 из 567816.

[ Ответ ]

4.21. Перемножьте числа, а затем проверьте результаты, выполнив соответствующие десятичные умножения:
а) 1011012 и 1012; | д) 378 и 48;
б) 1111012 и 11,012; | е) 168 и 78;
в) 1011,112 и 101,12; | ж) 7,58 и 1,68;
г) 1012 и 1111,0012; | з) 6,258 и 7,128.

[ Ответ ]

4.22. Разделите 100101102 на 10102 и проверьте результат, умножая делитель на частное.
[ Ответ ]

4.23. Разделите 100110101002 на 11002 и затем выполните соответствующее десятичное и восьмеричное деление.
[ Ответ ]

4.24. Вычислите значения выражений:

  • а) 2568 + 10110,12 . (608 + 1210) - 1F16;
  • б) 1AD16 - 1001011002 : 10102 + 2178;
  • в) 101010 + (10616 - 110111012)  128;
  • г) 10112 . 11002 : 148 + (1000002 - 408).
[ Ответ ]

4.25. Расположите следующие числа в порядке возрастания:

  • а) 748, 1100102, 7010, 3816;
  • б) 6E16, 1428, 11010012, 10010;
  • в) 7778, 1011111112, 2FF16, 50010;
  • г) 10010, 11000002, 6016, 1418.
[ Ответ ]

4.26. Запишите уменьшающийся ряд чисел +3, +2, ..., -3 в однобайтовом формате:

  • а) в прямом коде;
  • б) в обратном коде;
  • в) в дополнительном коде.
[ Ответ ]

4.27. Запишите числа в прямом коде (формат 1 байт):

а) 31; б) -63; в) 65; г) -128.
[ Ответ ]

4.28. Запишите числа в обратном и дополнительном кодах (формат 1 байт):

а) -9; б) -15; в) -127; г) -128.
[ Ответ ]

4.29. Найдите десятичные представления чисел, записанных в дополнительном коде:

а) 1 1111000; б) 1 0011011; в) 1 1101001; г) 1 0000000.
[ Ответ ]

4.30. Найдите десятичные представления чисел, записанных в обратном коде:

а) 1 1101000; б) 1 0011111; в) 1 0101011; г) 1 0000000.
[ Ответ ]

4.31. Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
а) 9 - 2; | г) -20 - 10; | ж) -120 - 15;
б) 2 - 9; | д) 50 - 25; | з) -126 - 1;
в) -5 - 7; | е) 127 - 1; | и) -127 - 1.

[ Ответ ]


Ответы — Раздел 4.

Ответы — Раздел 4. Арифметические основы компьютеров

4.1. в) троичная: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100, 101, 102, 110, 111, 112, 120, 121, 122, 200, 201; г) пятеричная: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 30, 31, 32, 33, 34.

4.2. а) 102;   б) 1102;
  в) 10002;   г) 100002;
   д) 1011002;   е) 28;
   ж) 108;   з) 408;
  и) 2008;   к) 100008;
   л) 1016;   м) 2016;
  н) 10016;   о) 9AFA16;
  п) CDF016.

4.3. а) 12;   б) 10012;
  в) 1112;   г) 11112;
  д) 100112;   е) 78;
  ж) 178;  з) 778;
  и) 1078;   к) 7778;
  л) F16;   м) 1F16;
  н) FF16;   о) A0F16;
  п) FFF16.

4.4. Четное двоичное число оканчивается цифрой 0, нечетное двоичное — цифрой 1, четное троичное — цифрами 0, 1 или 2.

4.5. а) 7; б) 511; в) 4091.

4.7. а) ни в какой; б) в шестеричной.

4.8. Основание 5.

4.9. а) 91; б) 183; в) 225; г) 35/64; д) 52,75; е) 335; ж) 520; з) 668; и) 7/16; к) 8333/64; л) 31; м) 2748; н) 4112; о) 41/64; п) 47825/32.

4.10. а) 11111012; 1758;
7D16; б) 111001012; 3458;
E516; в) 10110002; 1308;
5816; г) 100101,012; 45,28;
25,416; д) 11001110,0012; 316,18;
CE,216.

4.11. а) 11767,348; 13F7,716;
б) 1653,5648; 3AB,BA16; в)
271,5478; B9,B3816; г) 13634,68;
179C,C16; д) 27,76748;
17,FBC16; е) 1425,628;
315,C816.

4.12. а) 10110011102; 13168; б) 10011111010000002; 1175008; в) 101010111100110111102; 25363368; г) 1000000010000,0001000000012; 10020,04018; д) 1101010111100,100111012; 15274,4728.

4.13. а) 1011012, 1011102, 1011112, 1100002; б) 2023, 2103, 2113, 2123, 2203, 2213, 2223, 10003; в) 148, 158, 168, 178, 208; г) 2816, 2916, 2A16, 2B16, 2C16, 2D16, 2E16, 2F16, 3016;

4.14. а) 4710 - 1011112 - 578 - 4710 - 578 - 1011112 - 2F16 - 4710 - 2F16 - 1011112 - 4710; б) 7910 - 10011112 - 1178 - 7910 - 1178 - 10011112 - 4F16 - 7910 - 4F16 - 10011112 - 7910.

4.15.
 |  |  |  | + | 0 | 1 | 2 | 3 | 4
 |  |  |  | 0 | 0 | 1 | 2 | 3 | 4
+ | 0 | 1 | 2 | 1 | 1 | 2 | 3 | 4 | 10
0 | 0 | 1 | 2 | 2 | 2 | 3 | 4 | 10 | 11
1 | 1 | 2 | 10 | 3 | 3 | 4 | 10 | 11 | 12
2 | 2 | 10 | 11 | 4 | 4 | 10 | 11 | 12 | 13

4.16.
 |  |  |  | x | 0 | 1 | 2 | 3 | 4
 |  |  |  | 0 | 0 | 0 | 0 | 0 | 0
x | 0 | 1 | 2 | 1 | 0 | 1 | 2 | 3 | 4
0 | 0 | 0 | 0 | 2 | 0 | 2 | 4 | 11 | 13
1 | 0 | 1 | 2 | 3 | 0 | 3 | 11 | 14 | 22
2 | 0 | 2 | 11 | 4 | 0 | 4 | 13 | 22 | 31

4.17. а) 110101002; б) 10001,02; в) 10101,12; г) 11001,12; д) 1348; е) 2248; ж) 24,38; з) 348; и) 1916; к) 2516; л) 19,A16; м) 2616.

4.18. а) в 16-й; б) в 10-й; в) в 3-й; г) в 8-й; д) в 16-й.

4.19. в) А=9, B=4, C=5, D=3, F=1, L=0, M=7, N=8; г) A=3, B=6, C=2, D=5, E=9, F=7, G=1, H=0, I=4, J=8; д) A=9, B=3, C=4, D=2, E=1, F=8, G=0, H=7, I=6.

4.20. а) 11012; б) 1,112; в) 1010,12; г) -10,012; д) 38; е) 338; ж) 22,18; з) 11,258; и) 1716; к) 1A9216; л) -1,7E16; м) 4BBC16.

4.21. а) 111000012; б) 11000110,012; в) 1000000,1012; г) 1001011,1012; д) 1748; е) 1428; ж) 15.268; з) 55.22228.

4.22. 11112.

4.23. 11001112; 10310; 1478.

4.24. а) 149310; б) 54210; в) 142010; г) 1110.

4.25. а) 1100102, 3816, 748, 7010; б) 1428, 10010, 11010012, 6E16; в) 1011111112, 50010, 7778, 2FF16; г) 11000002, 6016, 1418, 10010.

4.26. а) 00000011, 00000010, 00000001, 00000000, 10000001, 10000010, 10000011; б) 00000011, 00000010, 00000001, 00000000, 11111110, 11111101, 11111100; в) 00000011, 00000010, 00000001, 00000000, 11111111, 11111110, 11111101.

4.27. а) 00001111; б) 10111111; в) 01000001; г) невозможно.

4.28. Обратный: а) 11110110, б) 11110000, в) 10000000, г) невозможнo. Дополнительный: а) 11110111; б) 11110001; в) 10000001; г) 10000000.

4.29. а) -8; б) -101; в) -23; г) -128.

4.30. а) -23; б) -96; в) -84; г) -127.

4.31. Обратный: а) 00000111; б) 11111000; в) 11110011; г) 11100001; д) 00011001; е) 01111110; ж) переполнение; з) 10000000; и) невозможно. Дополнительный: а) 00000111; б) 11111001; в) 11110100; г) 11100010; д) 00011001; е) 01111110; ж) переполнение; з) 10000001; и) 10000000.