
- •1. Системы счисления
- •1.2. Двоичная система счисления
- •1.7. Перевод из одной системы счисления в другую
- •1.8. Двоично-десятичный код
- •9 8 3 6 5
- •2. Двоичная арифметика
- •3. Способы представления чисел (прямой, обратный и дополнительный коды)
- •3.1. Положительные целые числа
- •3.2. Отрицательные целые числа
- •3.3. Преобразование кодов
- •3.4. Преобразование положительных чисел из одного кода в другой
- •3.5. Преобразование прямого кода отрицательного числа в обратный код и обратного кода отрицательного числа в прямой код
- •3.6. Преобразование обратного кода отрицательного числа в дополнительный код
- •3.7. Преобразование дополнительного кода отрицательного числа в обратный и прямой коды
- •3.8. Некоторые возможности упрощения преобразований двоичного прямого или обратного кода в дополнительный и наоборот
3. Способы представления чисел (прямой, обратный и дополнительный коды)
В целях упрощения выполнения арифметических операций и определения знака результата применяют специальные коды для представления чисел. Операция вычитания (или алгебраического сложения) чисел сводится к арифметическому сложению кодов, облегчается выработка признаков переполнения разрядной сетки. В результате упрощаются устройства, выполняющие арифметические операции.
Для представления чисел со знаком в ЭВМ применяют прямой, обратный и дополнительный коды.
Общая идея построения кодов такова. Код трактуется как число без знака, а диапазон представляемых кодами чисел без знака разбивается на два поддиапазона. Один из них представляет положительные числа, другой – отрицательные. Разбиение выполняется таким образом, чтобы принадлежность к поддиапазону определялась максимально просто.
Наиболее распространенным и удобным является формирование кодов таким образом, чтобы значение старшего разряда указывало на знак представляемых чисел, т.е. использование такого кодирования позволяет говорить о старшем разряде как о знаковом (бит знака) и об остальных как о цифровых разрядах кода.
Для представления знаковых целых чисел используются три способа:
1) прямой код;
2) обратный код;
3) дополнительный код.
Все три способа используют самый левый (старший) разряд битового набора длины n для кодирования знака числа: знак «плюс» кодируется нулем, а «минус» – единицей. Остальные n–1 разрядов (называемые мантиссой или цифровой частью) используются для представления абсолютной величины числа.
Запись числа αnαn–1…αi…α1α0α–1…αm , где αn∈{0,1} – знак числа, при всех прочих равных условиях имеет разные количественные эквиваленты в зависимости от того в каком коде, прямом, обратном или дополнительном, оно записано.
3.1. Положительные целые числа
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково – цифровая часть содержит двоичную запись числа (значащие разряды αn–1÷αm кодируют количественный эквивалент числа), в знаковом разряде содержится 0. Например, для n = 8:
110=12 |
12710=11111112 |
Диапазон представимых чисел: 0…2n–1–1.
3.2. Отрицательные целые числа
Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.
Значащие разряды αn–1÷αm отрицательного числа N кодируют:
• в прямом коде – модуль количественного эквивалента |N|;
• в обратном коде – дополнение модуля количественного эквивалента до веса знакового разряда, уменьшенного на вес младшего разряда, т.е. величину (qn–qm)–|N|;
• в дополнительном коде – дополнение модуля количественного эквивалента до веса знакового разряда qn, т.е. величину qn–|N|.
Например, число –137 в десятичной q = 10 и в двоичной q = 2 системах счислениях в разных кодах записывают так:
1|137пр 1|862обр 1|863доп
1|10001001пр 1|01110110обр 1|01110111доп
Формулы для вычисления количественного эквивалента кода
• прямого
• дополнительного
• обратного
Прямой, обратный и дополнительный коды обладают следующими свойствами:
1. В прямом и обратном кодах число ноль можно записать двумя способами. В прямом коде: 0|010 или 1|010; 0|00...02 или 1|00...02.
В обратном коде: 0|010 или 1|910; 0|00...02 или 1|11...12.
2. В прямом и обратном кодах диапазоны представления положительных и отрицательных чисел одинаковы и симметричны относительно нуля. Модуль минимального числа равен максимальному числу.
3. Сложение положительного числа с его отрицательным значением в обратном коде дает так называемую машинную единицу (МЕобр) 1|910 (1|11...12), состоящую из единиц в знаковом и значащих разрядах числа. Значение отрицательного нуля совпадает с МЕобр.
4. В дополнительном коде число ноль можно записать только одним способом как 0|010 (0|00...02) – машинный ноль. Отрицательный ноль в дополнительном коде не существует.
5. В дополнительном коде диапазоны представления положительных и отрицательных чисел не симметричны относительно нуля. Модуль минимального числа превышает максимальное число на величину равную весу младшего разряда qm. Код минимального числа в дополнительном коде 1|00...0 при любом натуральном q, а его количественный эквивалент – qn.
6. В дополнительном коде сумма положительного и равного ему по абсолютному значению отрицательного числа равна машинному нулю.
7. Минимальное число представимое в дополнительном коде (–qn) нельзя записать в прямом или в обратном коде, сохранив разрядность кодов.