TURBO PASCAL |
Новости
|
Глава 4. Арифметические основы компьютеров4.1. Что такое система счисления?
Существуют позиционные и непозиционные системы счисления. В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти. В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая — 7 единиц, а третья — 7 десятых долей единицы. Сама же запись числа 757,7 означает сокращенную запись выражения Любая позиционная система счисления
характеризуется своим основанием.
За основание системы можно принять любое натуральное число — два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная и т.д. Запись чисел в каждой из систем счисления с основанием q означает сокращенную запись выражения где ai — цифры системы счисления; n и 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.
В ы ч и т а н и еПример 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 в этой форме можно
представить так: или так:
Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
Мантиссу и порядок q-ичного числа
принято записывать в системе с основанием q,
а само основание — в десятичной системе.
Примеры нормализованного представления: Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:
Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255. Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел. Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат. 4.14. Как компьютер выполняет арифметические действия над нормализованными числами?К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ. Сложение и вычитаниеПри сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.
В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу. Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2-1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо: Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо: Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101 . 20. Умножение
Пример 3. Выполнить умножение двоичных нормализованных чисел: Деление
Пример 4. Выполнить деление двоичных нормализованных чисел: Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства. 4.15. Упражнения4.1. Используя Правило Счета, запишите первые 20 целых чисел в десятичной, двоичной, троичной, пятеричной и восьмеричной системах счисления.[ Ответ ] 4.2. Какие целые числа следуют за
числами:
[ Ответ ] 4.3. Какие целые числа предшествуют
числам:
[ Ответ ] 4.4. Какой цифрой заканчивается четное
двоичное число? Какой цифрой заканчивается
нечетное двоичное число? Какими цифрами
может заканчиваться четное троичное число? 4.5. Какое наибольшее десятичное число можно записать тремя цифрами:
4.6. В какой системе счисления 21 + 24 = 100? 4.7. В какой системе счисления справедливо следующее:
4.8. Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы. [ Ответ ] 4.9. Переведите числа в десятичную
систему, а затем проверьте результаты,
выполнив обратные переводы:
[ Ответ ] 4.10. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы: а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510. [ Ответ ] 4.11. Переведите числа из двоичной
системы в восьмеричную и шестнадцатеричную,
а затем проверьте результаты, выполнив
обратные переводы:
[ Ответ ] 4.12. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа: а) 2СE16;
б) 9F4016; в) ABCDE16;
г) 1010,10116; д) 1ABC,9D16. 4.13. Выпишите целые числа:
4.14. Для десятичных чисел 47 и 79 выполните цепочку переводов из одной системы счисления в другую: [ Ответ ] 4.15. Составьте таблицы сложения
однозначных чисел в троичной и пятеричной
системах счисления. 4.16. Составьте таблицы умножения
однозначных чисел в троичной и пятеричной
системах счисления. 4.17. Сложите числа, а затем проверьте
результаты, выполнив соответствующие
десятичные сложения:
[ Ответ ] 4.18. В каких системах счисления выполнены следующие сложения? Найдите основания каждой системы: [ Ответ ] 4.19. Найдите те подстановки десятичных цифр вместо букв, которые делают правильными выписанные результаты (разные цифры замещаются разными буквами):
[ Ответ ] 4.20. Вычтите:
[ Ответ ] 4.21. Перемножьте числа, а затем
проверьте результаты, выполнив
соответствующие десятичные умножения:
[ Ответ ] 4.22. Разделите 100101102 на 10102 и
проверьте результат, умножая делитель на
частное. 4.23. Разделите 100110101002 на 11002
и затем выполните соответствующее
десятичное и восьмеричное деление. 4.24. Вычислите значения выражений:
4.25. Расположите следующие числа в порядке возрастания:
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 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |