Об “арифметических возможностях” компьютера и “компьютерных возможностях” арифметики

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

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

Такое представление очень удобно для хранения в ЭВМ, так как на самом деле необходимо хранить не само число, а его знак, мантиссу, порядок и знак порядка и все операции с числами сводятся к операциям с этими, более “компактными”, объектами. Операции с этими объектами достаточно просты: сравнение знаков, увеличение, уменьшение порядка, сложение мантисс, нормализация, т.е. в конечном итоге сводятся к достаточно просто реализуемым операциям сдвига, выравнивания, сравнения разрядов. Это упрощает аппаратную их реализацию и является основой для различных архитектур микропрограммных, RISC и др.

Пример. В 16-разрядной арифметике двоичных чисел можно представить диапазон целых чисел х: 1215<x<2151 (старший разряд отвели под знак числа). Если в этой арифметике (не меняя её разрядность) отвести 7 разрядов под мантиссу, а 7 разрядов - под порядок, то уже представим диапазон чисел: 127 2127<x<127 2127 (два разряда - под знак числа и знак порядка; несколько упрощена и общая картина представления - для наглядности).

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

а) если число достаточно мало, например, а=0.12Е+00, то оно может быть представлено любым числом из наименьшего интервала включающего а, в частности, числом 0.120000001 или 0.199999999 и в этом случае сравнивать на равенство “в лоб” нельзя (вещественные числа в форме с плавающей запятой на совпадение опасно сравнивать);

б) порядок выполнения операций может влиять на результат, например, в 4-разрядной арифметике с фиксированной запятой 20.0000+0.0001=20.0001, но при этом 0.2000Е+02+0.1000Е-05=0.2000Е+02;

в) может возникнуть так называемая ситуация “переполнения порядка” при сложении (умножении) “очень больших чисел” или “исчезновения порядка” при сложении (умножении) “очень малых чисел”, например, результат 0.6000Е+39 0.1200Е+64 равен 0.9999Е+99 (или не определен) и результат 0.6000Е35 0.0200Е65 равен 0.9999Е99 (или не определен) при соответствующим образом определенной разрядности десятичной арифметики;

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

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

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

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

округление, усечение с коррекцией числа по определённым правилам, например, до числа кратного заданному числу, до ближайшего целого и т.п.

Пример. Операция взятия целой части числа x (функция Антье - [x] или int(x)) - операция усечения, [2.65]=2, [1.999]=2. Операция взятия целой части числа x+0.5 вместо значения числа х есть округление {x} до ближайшего целого, {1.05}={0.91}=1, {2.61}=[2.6+0.5]=3.

Задачи и упражнения

Задайте 20 - ую систему счисления и выполните операции над числами в этой системе.

В саду 1000 деревьев - 140 яблонь и 420 груши. В какой системе счисления посчитаны эти деревья? Найдите общее число деревьев в саду в шестнадцатеричной системе.

Имеются ящики: 4 черных, 3 красных, 2 желтых и 1 зеленый (ящики посчитаны в десятичной системе). В каждом черном ящике - (21)p шара, красном - (23)p шара, жёлтом - (23)p шара, зелёном - (111)p шара. Определить основание p системы счисления, в которой были посчитаны шары, если всего было (244)p шаров. Чему равно общее число шаров в восьмеричной системе?

Число х=(176)p (рассматриваемая в системе счисления с основанием р, 1<р<20) делится нацело на 7. Найти р (не перебирая все указанные р). Вычислить х в восьмеричной системе.

Найти основание системы р (в которой было выполнено сложение) и неизвестные цифры (обозначены *), если 24**1+*235*=116678.

Какова разрядность двоичной системы счисления, в которой представим лишь диапазон чисел из интервала (255; 255)?

Найти числа, соответствующие понятиям “нуль” и “бесконечность” в 10-разрядной десятичной системе счисления и сравнить их. Указать эти числа для двоичной, восьмеричной и шестнадцатеричн?/p>