Прямой, обратный и дополнительный коды




Прямой код Апр числа со знаком А содержит старший знаковый бит и младшие информационные биты, заполненные в соответствии с представлением числа: целым или с фиксированной запятой:

 

Обратный код Аобр числа со знаком А для положительного числа совпадает с прямым кодом, для отрицательного – содержит инвертированные информационные биты:

 

Операция инвертирования или обращения выполняется путем замены 0 на 1, и 1 на 0.

 

Обратный код с дополнением до единицы или просто дополнительный код А доп числа со знаком А для положительного числа совпадает с прямым и обратным кодом, для отрицательного - содержит инвертированные информационные, биты сложенные с единицей в младшем бите кода:

 

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

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

а чисел с фиксированной запятой - неравенством:

 

.

Представление в прямом и дополнительном коде имеет недостаток: для представления нуля используются две различные кодовые комбинации. На представление нуля в дополнительном коде требуется только одна кодовая комбинация, поэтому отрицательных чисел представимо на одно больше. Диапазон представления целых чисел со знаком в дополнительном коде разрядности n определяется неравенством:

,

а чисел с фиксированной запятой - неравенством:

 

 

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

 

Примеры

Представим 0(2) и −0(2) в прямом, обратном и дополнительном коде разрядности n = 5.

 

Запись прямого обратного и дополнительного кодов числа 0(2) представлена на рис. 1, а), числа −0(2) - на рис. 1, б). В прямом коде для хранения «положительного нуля» используется комбинация 00000,«отрицательного нуля» - 10000, в итоге: различные комбинации кода. Но число ноль не может быть положительным или отрицательным! Этот недостаток наследуется обратным кодом: «положительный нуль» − 00000, «отрицательный нуль» −11111. Дополнительный код устраняет этот недостаток, «положительный» и «отрицательный» ноль представлены одной комбинацией кода 00000. При получении дополнительного кода числа − 0(2) возникла ситуация переноса из знакового бита, этот перенос за пределы разрядной сетки не учитывается.

 

      ПК           ПК
      ОК           ОК
          +        
      ДК           ДК
а)   б)

Рис 1.

1. Записать прямой Апр , обратный Аобр и дополнительный А доп код числа: а) 10110 (2); б) -10110 (2); в) -1110001 (2); г) -0,11011 (2); д)0,00001 (2); е) -0,00001 (2) в разрядности п = 8.

 

а) Запись кодов числа представлена на рис. 2, а. Задано целое положительное число, поэтому знаковый бит есть 0, информационные биты и незначащие нули записаны по правилу представления целого числа. Для положительного числа прямой, обратный и дополнительный код совпадают.

Ответ: Апр = Аобр = Адоп =00010110.


 

 

a)           ПК, ОК, ДК
                 
б)           ПК    
            ОК    
            ДК    
                 
в)           ПК    
            ОК    
            ДК    
                 
г)           ПК    
            ОК    
            ДК    
                 
д)           ПК, ОК, ДК
                 
е)           ПК    
            ОК    
            ДК    
                 

Рис 2.

 

б) Запись кодов числа представлена на рис. 2, б. Задано целое отрицательное число, следовательно, в прямом коде знаковый бит есть 1, информационные биты и незначащие нули записаны по правилу кодирования целого числа. Из прямого кода инвертированием всех бит кроме знакового, получен обратный код. Добавлением единицы в младший бит обратного кода получен дополнительный код.

Ответ: Апр = 10010110; Аобр = 11101001; Адоп = 11101010.

в) Записи представлены на рис. 2, в.

г) Запись кодов числа представлена на рис. 2, г. Задано отрицательное число с фиксированной запятой, следовательно в прямом коде знаковый бит есть 1, информационные биты и незначащие нули записаны по правилу кодирования числа с фиксированной запятой. Из прямого кода инвертированием всех бит кроме знакового получен обратный код. Добавлением единицы в младший бит обратного кода получен дополнительный код.

Ответ: Апр = 11101100; Аобр = 10010011; Адоп = 10010100.

Пункты д), е) выполняются аналогично г). Записи представлены на рис. 2.д, е.

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

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

Примеры

1. Прочитать целое число в дополнительном коде: а) 001000; б) 10101111; в) 11111; г) 1000.

а) Разрядность n = 6. Знаковый бит: 0, значит число положительное, дополнительный код совпадает с прямым кодом. В прямом коде информационными битами являются биты с 3-го по 6-ой.

Ответ: 1000(2).

б) Разрядность n=8. Знаковый бит: 1, значит число отрицательное. Оборачивая все биты и добавляя единицу в младший бит (рис. 3, а), получаем прямой код обратного) числа. Прямой код преобразуем по правилу кодирования целого числа и дополняем знаком «−».

Ответ:−1010001(2).

 

a)           ДК
             
  +          
            -ПК

 

             
б)         ДК  
          -ПК  
             
в)       ДК    
        -ПК    

 

Рис 3.

 

в) Разрядность п = 5. Число отрицательное. Дополнительный кодпреобразуем в прямой код обратного числа (рис. 3, б), при записичисла дополняем знаком «−».

Ответ: −1(2).

г) Разрядность п = 4. Число отрицательное. Дополнительный код и прямой код обратного числа представлен на рис. 3, в. Прямой код дополнительного числа не имеет знакового бита, поэтому старший бит включается в информационные биты.

Ответ: −1000(2).

2. Прочитать число с фиксированной запятой в дополнительном коде: а) 001000; б) 10101111; в) 11111; г) 1000.

а) Разрядность n = 6. Знаковый бит: 0, значит число положительное, дополнительный код совпадает с прямым кодом. В прямом коде информационными битами являются биты со 2-го по 3-ий, в прочих незначащие нули.

Ответ: 0,01(2).

б) Разрядность n = 8. Число отрицательное. Прямой код обратного числа представлен на рис. 3, а. Прямой код преобразуем по правилу кодирования числа с фиксированной запятой и дополняем

знаком «−».

Ответ: −0,1010001(2).

б) Разрядность n = 5. Число отрицательное. Обратного числа представлен на рис. 3, б. Запись числа выполнена по правилу кодирования числа с фиксированной запятой и дополнена знаком «−».

Ответ:−0,0001(2).

г) Разрядность n = 4. Число отрицательное. Дополнительный код и прямой код обратного числа представлен на рис. 14, в. Прямой код дополнительного числа не имеет знакового бита, поэтому старший бит отнесен к информационным.

Ответ: -1 (2).

В последнем примере одни и те же комбинации кода прочитывались различно в зависимости от представления. Для чтения числа необходимо иметь полное описание представления этого числа в памяти!



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: