Представление в ЭВМ целых двоичных чисел без знака

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

Числовая ось для чисел без знака

Рис. 3.4. Числовая ось для чисел без знака

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

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

Ограниченный набор двоичных кодов в ЭВМ

Рис. 3.5. Ограниченный набор двоичных кодов в ЭВМ

Таким образом, для представления двоичных чисел без знака в ЭВМ мы можем оперировать только этим конечным набором двоичных кодов. Разумно для обозначения этих чисел выбрать следующее соответствие (рис. 3.6).

Набор чисел без знака, представленных четырехразрядным двоичным кодом

Рис. 3.6. Набор чисел без знака, представленных четырехразрядным двоичным кодом

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

Напомним двоичную арифметику для одноразрядных двоичных чисел.

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

Представление в ЭВМ целых чисел со знаком

Для представления чисел со знаком обычно используется модель числовой оси, бесконечной в сторону как положительных, так и отрицательных чисел (рис. 3.7). Знак «+» перед положительными числами обычно не ставится, а подразумевается.

Бесконечная числовая ось для чисел со знаком

Рис. 3.7. Бесконечная числовая ось для чисел со знаком

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

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

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

Неудачный вариант соответствия положительных и отрицательных чисел четырехразрядным двоичным кодам

Рис. 3.8. Неудачный вариант соответствия положительных и отрицательных чисел четырехразрядным двоичным кодам

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

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

Например,

Очевидно, что полученный результат (-210) является некорректным.

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

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

Представление отрицательных чисел двоично-дополнительным кодом

Рис. 3.9. Представление отрицательных чисел двоично-дополнительным кодом

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

Например,

для 4-разрядных двоичных чисел для 8-разрядных двоичных чисел

Каковы свойства такого представления двоичных чисел со знаком?

Из диаграммы на рис. 3.9 видно, что:

  • 1) положительные числа представляются обычным образом;
  • 2) у всех положительных чисел старший разряд равен нулю, а у всех отрицательных равен единице;
  • 3) для представления нуля используется единственный код;
  • 4) при переходе по часовой стрелке от одного числа к другому как для положительных, так и для отрицательных чисел каждое следующее число на единицу больше предыдущего, как это имеет место для обычного представления чисел на бесконечной числовой оси;
  • 5) при использовании привычного алгоритма сложения сумма положительного числа и равного ему по абсолютной величине отрицательного числа равна нулю.

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

Рассмотрим примеры:

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

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

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >