Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Знаковые представления и представления в дополнительном коде

Утверждено редакционно-издательским советом университета | Технический университет, 2011 | Требования к выполнению самостоятельной работы | Обзор и история архитектуры компьютеров | Системы команд и типы команд | Устройство памяти компьютера. Иерархия памяти | Задания для самостоятельного выполнения | Темы рефератов |


Читайте также:
  1. ERwinимеет два уровня представления модели - логическийи физический. Логический
  2. Вопрос 1. Психоаналитические представления о поведении
  3. Вопрос 2. Гештальт-психологические представления о поведении
  4. Городские массовые гулянья, балаганные и другие представления 16-17вв. Русский площадной театр и скоморошество.
  5. Искаженные Представления о Мессии.
  6. Массовые празднества и представления в период Революции и гражданской войны. Первый «красный» календарь.

 

Легко использовать байты, слова или двойные слова для представления целых положительных чисел — от 0 до 255, 65 535 или 4 294 967 295 соответственно. Чтобы использовать те же самые байты или слова для представления отрицательных чисел, существует специальная операция, известная как дополнение до двух. Для изменения знака числа выполняют инверсию, то есть заменяют в двоичном представлении числа все единицы нулями и нули единицами, а затем прибавляют 1.

Например, пусть используются переменные типа слова:

150 = 0096h = 0000 0000 1001 0110b

инверсия дает: 1111 1111 0110 1001b

+1 = 1111 1111 0110 1010b = 0FF6Ah

 

Проверим, что полученное число на самом деле -150: сумма с +150 должна, быть равна нулю:

+150 + (-150) = 0096h + FF6Ah = 10000h;

Единица в l6-м разряде не помещается в слово, и значит, мы действительно получили 0. В этом формате старший (7-й, 15-й, 31-й для байта, слова, двойного слова соответственно) бит всегда соответствует знаку числа 0 — для положительных и 1 — для отрицательных. Таким образом, схема с использованием дополнения до двух выделяет для положительных и отрицательных чисел равные диапазоны: -128 — +127 — для байта, -32 768 — +32 767 — для слов, -2 147 483 648 — +2 147 483 647 — для двойных слов.

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

-32768 (-215) до 32677 (215-1) и для их хранения отводится 2 байта: типа LongInt - в диапазоне от -231 до 231-1 и размещаются в 4 байтах: типа Word - в диапазоне от 0 до 65535 (216-1) используется 2 байта и т.д.

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

Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть представлен следующим образом: число переводиться в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37(10) = 100101(2) объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа LongInt, то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

· записать прямой код модуля числа;

· инвертировать его (заменить единицы нулями, нули - единицами);

· прибавить к инверсионному коду единицу.

Например, запишем дополнительный код числа -37, интерпретируя его как величину типа LongInt:

прямой код числа 37 есть 000000000000000000000000000100101

инверсный код 11111111111111111111111111011010

дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16)

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

· вычесть из кода 1;

· инвертировать код;

· перевести в десятичную систему счисления. Полученное число записать со знаком минус.

 

 


Дата добавления: 2015-08-27; просмотров: 110 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Представление числовых данных. Система счисления| Представление нечисловых данных

mybiblioteka.su - 2015-2024 год. (0.006 сек.)