Студопедия

Главная страница Случайная страница

Разделы сайта

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






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






Дополнительный код отрицательного двоичного числа b равен 2k–|b|, где k – длина соответствующей разрядной сетки, т.е. дополнительный код отрицательного числа есть дополнение его модуля до 2k.

Например, дополнительный код числа -101012 = -2110 в разрядной сетке длиной 8 бит будет равен

1000000002–101012=111010112=23510 (235+21=256)

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

Для получения дополнительного k-разрядного кода отрицательного числа можно использовать следующий алгоритм:

1. модуль числа представить прямым кодом в k двоичных разрядах;

2. получить обратный код, т.е. инвертировать значения всех бит (заменить 1 на 0 и наоборот);

3. к полученному обратному коду, как k-разрядному неотрицательному числу, добавить 1.

Для используемого в предыдущем примере числа -101012 получаем:

прямой код – 0001 01012

обратный код – 1110 10102

дополнительный код – 1110 10112

Представление целых чисел в форме с фоксированной точкой имеет ряд недостатков, и прежде всего это – ограниченный диапазон представимых чисел.

При использовании беззнакового формата в k-разрядной сетке можно представить целые положительные числа, не превышающие 2k-1 (k единичных бит):

Длина разрядной сетки Диапазон Тип данных в Паскале Тип данных в С
k=8 28-1=255 byte unsigned char
k=16 216-1=65535 word unsigned short
k=32 232-1=4 294 967 295 unsigned long

При использовании знакового формата в той же k-разрядной сетке можно представить числа от –2k-1 до 2k-1-1 (этот диапазон не является симметричным относительно 0, что следует из особенностей представления целых отрицательных чисел в ЭВМ):

Длина разрядной сетки Диапазон Тип данных в Паскале Тип данных в С
k=8 -27= -128 ¸ 27-1=127 shortint char
k=16 -215= -32768 ¸ 215-1=32767 integer short (short int)
k=32 -231= -2 147 483 648 ¸ 231-1=2 147 483 647 longint long (long int)

Примечание: В языке С определен еще один целочисленный тип – int (со знаком или без), который соответствует размеру целого на данной машине. На 16-разрядной машине этот тип имеет 2 байта, а на 32-разрядной – 4 байта, т.е. тип int эквивалентен short или long, а тип unsigned int – unsigned short или unsigned long. Так как типы int и unsigned int зависят от машинной реализации, программы, зависящие от размера этих типов, могут быть неперносимы.

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.