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

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

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

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

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

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

Например:

Число 110 = 12
               
Знак числа «+»
Число 12710 = 11111112
               
Знак числа «+»

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

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

Прямой код числа 1
               
Знак числа «-»
Прямой код числа 127
               
Знак числа «-»

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

Число: -1 Код модуля числа:0 0000001 Обратный код числа: 1 1111110
               
Число: -127 Код модуля числа:0 1111111 Обратный код числа: 1 0000000
               

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

Дополнительный код числа: -1
               
Дополнительный код числа: -127
               

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

1.8 Выполнение арифметических операций над целыми числами с учетом их разрядности

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

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

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

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

Десятичная запись
 
   
+  
   
Двоичные коды
 
                 
+                
                 

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

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

Десятичная запись
 
     
+    
    -7
Двоичные коды
 
                 
+                
                 

Обратный код числа – 10

Обратный код числа – 7

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

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

Десятичная запись
 
     
+   -3
     
Двоичные коды
 
                 
+                
               
              +  
                 

Обратный код числа – 3

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

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

Десятичная запись
 
    -3
+   -7
  -1  
Двоичные коды
 
                  Обратный код числа – 3
+                 Обратный код числа – 7
                 
              +    
                  Обратный код числа – 10

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

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

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

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

Десятичная запись
 
     
+    
     
Двоичные коды
 
                   
+                  
                  Переполнение

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

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

Десятичная запись
 
  -6  
+ -9  
-1    
Двоичные коды
 
                  Обратный код числа – 63
+                 Обратный код числа – 95
                Переполнение
              +    
                   

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

Все эти случаи имеют место и при сложении дополнительных кодов чисел:

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

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

Десятичная запись
 
     
+ -1  
    -7
Двоичные коды
 
                   
+                 Допол-ный код числа – 10
                  Допол-ный код числа – 7

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

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

Десятичная запись
 
     
+   -3
     
Двоичные коды
 
                   
+                 Допол-ный код числа – 3
                 
                  Перенос отбрасывается

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

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

Десятичная запись
 
    -3
+   -7
  -1  
Двоичные коды
 
                  Допол-ный код числа – 3
+                 Допол-ный код числа – 7
                Допол-ный код числа – 10
                  Перенос отбрасывается

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

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

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

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

Умножение и деление

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

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

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

Накапливающий сумматор   Множитель
                       
+                      
                       
+                      
                       
+                      
                       
+                      
                       
   
    Сдвиг на две позиции влево
    Сдвиг на одну позицию влево
    Сдвиг на две позиции влево
   

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

1.9 Представление вещественных чисел в ЭВМ

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

При их написании вместо запятой принято писать точку. Так, например, число 5 - целое, а числа 5.1 и 5.0 - вещественные.

Для удобства отображения чисел, принимающих значения из достаточно широкого диапазона (то есть, как очень маленьких, так и очень больших), используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 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 · q p, где M называется мантиссой числа, а p - порядком. Такой способ записи чисел называется представлением с плавающей точкой.

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

Мантисса должна быть правильной дробью, первая цифра которой отлична от нуля: M из [0.1, 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)

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

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

Форматы вещественных чисел Размер в байтах Примерный диапазон абсолютных значений Количество значащих десятичных цифр
Одинарный   10-45: 1038 7 или 8
Вещественный   10-39: 1038 11 или 12
Двойной   10-324: 10308 15 или 16
Расширенный   10-4932: 104932 19 или 20

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

При хранении числа с плавающей точкой отводятся разряды для мантиссы, порядка, знака числа и знака порядка:

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

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

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

1. Число 6.2510 = 110.012 = 0,11001·211:

2. Число -0.12510 = -0.0012 = -0.1·2-10 (отрицательный порядок записан в дополнительном коде):

1.10 Выполнение арифметических операций над вещественными числами с учетом их разрядности

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

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

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

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

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

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

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

  0.                 * 210
+ 0.                 * 210
  0.                 * 210

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

  0.             * 210
- 0.             * 210
  0.             * 210

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 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.

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

Как устроен ПК

Рассмотрим устройство компьютера на примере самой распространенной компьютерной системы - персонального компьютера.

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

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

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

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

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

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

Рис. 5.1. Общая структура персонального компьютера

с подсоединенными периферийными устройствами

Для того, чтобы соединить друг с другом различные устройства компьютера, они должны иметь одинаковый интерфейс (англ. interface от inter - между, и face - лицо).

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

Если интерфейс является общепринятым, например, утверждённым на уровне международных соглашений, то он называется стандартным.

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

Для согласования интерфейсов периферийные устройства подключаются к шине не напрямую, а через свои контроллеры (адаптеры) и порты примерно по такой схеме:

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

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

Портами также называют устройства стандартного интерфейса: последовательный, параллельный и игровой порты (или интерфейсы).

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

К последовательному порту обычно подсоединяют медленно действующие или достаточно удалённые устройства, такие, как мышь и модем. К параллельному порту подсоединяют более "быстрые" устройства - принтер и сканер. Через игровой порт подсоединяется джойстик. Клавиатура и монитор подключаются к своим специализированным портам, которые представляют собой просто разъёмы.

Основные электронные компоненты, определяющие архитектуру процессора, размещаются на основной плате компьютера, которая называется системной или материнской (MotherBoard). А контроллеры и адаптеры дополнительных устройств, либо сами эти устройства, выполняются в виде плат расширения (DаughterBoard - дочерняя плата) и подключаются к шине с помощью разъёмов расширения, называемых также слотами расширения (англ. slot - щель, паз).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: