|
|
Книги-onlineГлава 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,
4.2. Как порождаются целые числа в позиционных системах счисления?В каждой системе счисления цифры упорядочены в соответствии с их значениями:
1 больше 0, 2 больше 1 и т.д.
Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 замену её на 0. Целые числа в любой системе счисления порождаются с помощью Правила
счета [44]:
Применяя это правило, запишем первые десять целых чисел
4.3. Какие системы счисления используют специалисты для общения с компьютером?Кроме десятичной широко используются системы с основанием, являющимся целой степенью числа 2, а именно:
Из всех систем счисления особенно проста и поэтому интересна
для технической реализации в компьютерах двоичная система счисления.
4.4. Почему люди пользуются десятичной системой, а компьютеры двоичной?Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.
А компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:
4.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления?Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи. Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы. Числа в этих системах читаются почти так же легко, как десятичные, требуют
соответственно в три (восьмеричная) и в четыре (шестнадцатеричная)
раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 соответственно,
третья и четвертая степени числа 2).
Например:
Например,
4.6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?
Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную: Ответ: 7510 = 1 001 0112 =
1138 = 4B16.
4.7. Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления?
Пример. Переведем число 0,36 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
4.8. Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную?
Примеpы:
4.9. Сводная таблица переводов целых чисел из одной системы счисления в другуюРассмотрим только те системы счисления, которые применяются в компьютерах десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком: На этом рисунке использованы следующие обозначения:
Таблица 4.1. 4.10. Как производятся арифметические операции в позиционных системах счисления?Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы. С л о ж е н и еТаблицы сложения легко составить, используя Правило Счета.
Пример 2. Сложим числа 15, 7 и 3.
Пример 3. Сложим числа 141,5 и 59,75.
В ы ч и т а н и еПример 4. Вычтем единицу из чисел 102, 108 и 1016Пример 5. Вычтем единицу из чисел 1002, 1008 и 10016. Пример 6. Вычтем число 59,75 из числа 201,25.
У м н о ж е н и еВыполняя умножение многозначных чисел в различных позиционных системах счисления, можно использовать обычный алгоритм перемножения чисел в столбик, но при этом результаты перемножения и сложения однозначных чисел необходимо заимствовать из соответствующих рассматриваемой системе таблиц умножения и сложения.
Пример 7. Перемножим числа 5 и 6.
Д е л е н и еДеление в любой позиционной системе счисления производится по тем же правилам, как и деление углом в десятичной системе. В двоичной системе деление выполняется особенно просто, ведь очередная цифра частного может быть только нулем или единицей.Пример 9. Разделим число 30 на число 6.
Восьмеричная: 133518 :1638
Восьмеричная: 438 : 168
4.11. Как представляются в компьютере целые числа?Целые числа могут представляться в компьютере со знаком или без знака. Целые числа без знакаОбычно занимают в памяти компьютера один
или два байта. В однобайтовом
формате принимают значения от
000000002 до 111111112.
В двубайтовом формате - от 00000000
000000002 до 11111111 111111112.
Примеры: а) число 7210 = 10010002 в однобайтовом формате:
б) это же число в двубайтовом формате:
в) число 65535 в двубайтовом формате: Обычно занимают в памяти компьютера один, два или четыре байта, при этом
самый левый (старший) разряд содержит информацию о знаке числа.
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины - семь разрядов.
Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения. Положительные числа в прямом, обратном и
дополнительном кодах изображаются одинаково - двоичными кодами с
цифрой 0 в знаковом разряде. Например: Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение. 1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды
цифровой части числа двоичный код его абсолютной величины. Например:
2. Обратный код. Получается инвертированием всех цифр двоичного кода
абсолютной величины числа, включая разряд знака: нули заменяются единицами, а
единицы нулями. Например: 3. Дополнительный код. Получается образованием обратного кода с
последующим прибавлением единицы к его младшему разряду. Например: Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа. 4.12. Как компьютер выполняет арифметические действия над целыми числами?Сложение и вычитаниеВ большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Это позволяет существенно упростить конструкцию АЛУ. Сложение обратных кодов. Здесь при сложении чисел А и В имеют место четыре основных и два особых случая: 1. А и В положительные. При суммировании
складываются все разряды, включая разряд знака. Так как знаковые разряды
положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:
2. А положительное, B отрицательное и по абсолютной величине
больше, чем А. Например:
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например:
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 отрицательное и по абсолютной величине больше,
чем А. Например:
3. А положительное, B отрицательное и по абсолютной величине меньше,
чем А. Например:
4. А и В отрицательные. Например:
Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов. Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:
Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения. Для иллюстрации умножим 1100112 на 1011012. Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя. 4.13. Как представляются в компьютере вещественные числа?Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, т.е. не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. В следствие этого система вещественных чисел, представимых в машине, является дискретной (прерывной) и конечной. При написании вещественных чисел в программах вместо привычной запятой
принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими,
так и очень большими, используется форма записи чисел с порядком основания
системы счисления. Например, десятичное число 1.25 в этой форме можно представить так:
Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
|