Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема-4 Зан-1-(Арифм-основы-4).docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
106.1 Кб
Скачать

5. Способы кодирования чисел.

Все системы счисления допускают использование как положительных, так и отрицательных чисел для обозначения которых, как известно, применяют знаки плюс (+) или минус (-). Число в таком обозначении называется числом со знаком. Поскольку узлы вычислительной техники и автоматики построены на схемах двоичной логики и для представления двоичных состояний применяются символы «0» и «1», то эти же символы следует использовать и для обозначения знака числа. Для обозначения положительных значений используют символ «0», для отрицательных - символ «1».

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

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

Прямой код числа.

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

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

А(2) = + 1001(2),

[A]пр = 0.1001

В(2) = - 1001(2),

[В]пр = 1.1001

Прямой код числа обозначается [A]пр.

Например.

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

При изображении положительного числа:

+А пр = +26(10) = 0.011010(2)

изменяется только знак по сравнению с предыдущим примером, т.е.

А пр = +26(10) = 0.011010(2)

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

[2 - 1].

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

Однако для отрицательных чисел отрицательный вес знакового разряда изменяет содержимое цифровых разрядов. Целое число Х из n двоичных разрядов (включая знаковый) в обратном коде можно записать следующим образом:

N(x) = 0.Х

n-1

при Х  0,

N(x) = 1.

{[2-1] - |X|}

+

при Х  0.


Например, изображение целого положительного числа А = 26(10) в виде семиразрядного двоичного кода выглядит следующим образом:

А доп = 0.011010(2).

Теперь рассмотрим отрицательное число А = -26(10). Модуль этого числа равен |X| = 26(10) = 011010(2). Поскольку с учетом знакового разряда:

n-1

7-1 6

n 2 -1=2 -1=2 -1=64-1=63=111111,

а [2 - 1] - |X| = 111111 - 011010 = 100101, то Адоп = 1.100101. + -

Сравнивая результаты рассмотренных примеров, можно заметить, что

А доп (Х) + А доп (Х) = 1.111111

Это уравнение отражает свойство, заключающееся в том, что при суммировании некоторого двоичного числа и его дополнения до единицы во всех разрядах получаются единицы. Из этого свойства вытекает следствие: если каждый разряд числа N(х) заменить его дополнением до единицы, то получим N(х).

Рассмотрим, например, число N(39) = 0.100111. Заменяя нули на единицы, а единицы на нули (образуя поразрядное дополнение числа до единицы), получим:

N(-39) = 1.011000.

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

Например, N(-х) = 1.011. Образуя поразрядное дополнение до единицы, получим число 0.100, т.е. число +410. Таким образом, 1.011 = -410.

При втором способе используется тот факт, что знаковый разряд n-разрядного двоичного числа

n-1

имеет отрицательный вес (2-1)n-1. В нашем примере n = 4; 2 – 1 = 7, и вес знакового разряда есть -7. Таким образом, 1.011 = -7 + 3 = -4(10).

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

Пример. Выполнить операцию 39(10) - 26(10).

Решение. Преобразуем данную операцию следующим образом:

39(10) - 26(10) = 39(10) + (-26(10)).

В обратном коде значения этих чисел будут соответственно равны:

N(39) = 0.100111

N(-26) = 1.100101.

N(39) + N(-26) = 0.100111

+ 1.100101

10.001100

Пренебрегая переносом из знакового разряда, получим 0.001100(2) = +12(10).

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

0.001100 + 0.000001 = 0.001100(2) = +13(10).

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

Дополнительный код числа. Представление двоичных положительных чисел в дополнительном коде идентично представлению их в прямом или обратном коде. Для отрицательных чисел дополнительный код равен обратному с добавлением единицы младшего разряда. Вследствие этого вес знакового разряда для дополнительного кода числа равен – 2(n-1) при значениях Х < 0.

Поэтому n - разрядное целое двоичное число Х в дополнительном коде будет представлено следующим образом : М(х) = N(х) = 0.Х n-1 при Х  0,

М(х)=N(х)+1=1.{2 -|X|} при Х < 0,

Пример. Записать число -26(10) в дополнительном коде. Процедуру построения дополнительного кода удобно выполнить поэтапно.

Решение. 1. Определить двоичный код числа 26(10): 26(10) = 11010(2).

2. Определить прямой код числа 26(10): N(26) = 0.11010.

3. Определить обратный код числа -26: N(-26) = 1.00101.

4. Прибавить единицу младшего разряда: М(-26) = 1.00110.

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

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

Пример. Записать число -26(10) в дополнительном коде.

Решение. 1. Записать модуль числа в прямом коде:

|-26(10)| = 0.11010(2).

2. Переписать значения младших разрядов до разряда, содержащего включительно: М(-26)=Х.ХХХ10.

3. Произвести дополнение до единицы в остальных разрядах:

М(-26) = 1.001,10

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

n-1

знакового разряда равен - 2.

Пример. М(х) = 1.00110. Определить Х.

Решение. 1. Определить дополнение числа до единицы : N(x)=0.11001=25(10).

2. Прибавить к полученному результату единицу младшего разряда: N(x) = 25+1 = 26(10).

таким образом, Х = -26(10).