Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Дополнительный код положительного двоичного числа равен прямому коду этого числа.
Дополнительный код отрицательного двоичного числа 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-разрядной сетке можно представить числа от –2k-1 до 2k-1-1 (этот диапазон не является симметричным относительно 0, что следует из особенностей представления целых отрицательных чисел в ЭВМ):
Примечание: В языке С определен еще один целочисленный тип – int (со знаком или без), который соответствует размеру целого на данной машине. На 16-разрядной машине этот тип имеет 2 байта, а на 32-разрядной – 4 байта, т.е. тип int эквивалентен short или long, а тип unsigned int – unsigned short или unsigned long. Так как типы int и unsigned int зависят от машинной реализации, программы, зависящие от размера этих типов, могут быть неперносимы. Если в ходе вычислений получается число, превосходящее указанные границы, программа будет остановлена в аварийном режиме, а такая ситуация называется переполнением разрядной сетки.
|