Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
V.Формы представл. инф.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
466 Кб
Скачать
☆

2. Прямой, обратный и дополнительный коды чисел.

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

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

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

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

Десятичная:

999 - 531 = 468 → обратный код десятичного числа 531.

Шестнадцатеричная:

FFF – D54 =2AB → обратный код шестнадцатеричного числа D54.

Двоичная:

11111111 – 10011101 = 01100010 → обратный код двоичного числа 10011101.

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

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

Десятичная:

1000 – 531 = 469 → дополнительный код десятичного числа 531.

Шестнадцатеричная:

1000 – D54 = 2AС → дополнительный код шестнадцатеричного числа D54.

Двоичная:

100000000 – 10011101 = 01100011 → дополнительный код двоичного числа

10011101.

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

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

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

3. Кодирование в компьютерах целых чисел.

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

а) Числа без знака представляются в компьютерах прямым кодом.

б) Числа со знаком представляются кодом, в котором первый разряд

кода числа является символом знака: 0 – положительного числа,

1 – отрицательного числа.

При этом все отрицательные числа представляются в дополнительном коде.

Поэтому в первом примере, представленное число будет иметь значение равное (в десятичной форме представления): 183, а во втором: -73.

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

4. Кодирование в компьютерах вещественных чисел.

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

N = Sp·q

где: S – основание системы счисления – всегда целое число;

p – порядок основания, или, как обычно говорят, просто порядок

числа: порядок то же всегда представляется целым числом;

q – мантисса, которая всегда представлена дробным числом.

В современных компьютерах основание системы счисления представляемых чисел всегда равно 2 и поэтому для них N = 2p·q.

Мантисса числа в мэйнфреймах, типа IBM 360/370 и ЕС ЭВМ, должны удовлетворять требованию: 1 > q ≥ 0,5, т.е. должна быть в пределах: 0,111…1 ≥ 0,100…0.

Мантисса числа q для наиболее распространенных современных персональных компьютеров корпорации Intel принята несколько другой. Она должна удовлетворять требованию: 2 > q ≥ 1, то есть должна быть в пределах 1,111…1≥ q ≥1,000…0.

Таким образом, в полулогарифмическом виде представление числа -110,0101 в персональных компьютерах будет: -2+2·1,100101, а числа +0,011101 будет: +2-2·1,1101.

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

Непосредственно в ячейках памяти, вещественные числа хранятся в формате, показанном на рис.V.1.1. (При этом, на рисунке приведен конкретный формат короткого вещественного числа – КВ).

Рис. V.1.1. Размещение в ячейках памяти элементов представления

вещественных чисел в формате КВ (короткое вещественное).

Заметим, что поскольку первый разряд значения мантиссы всегда должен быть равен 1, то он фактически в оперативной памяти не фиксируется, но всегда подразумевается. На этом экономится объем памяти, необходимый для хранения данных.

Поскольку порядок числа есть целое число со знаком, то старший разряд порядка должен содержать знак порядка. В начальный период развития компьютерной техники так и было. Однако операции с порядками, которые имеют место почти всегда при обработке вещественных чисел, затрудняются тем, что порядок представляется числом со знаком. Поэтому в современных компьютерах используются исключительно так называемые смещенные порядки. Для получения смещенного порядка к исходному значению порядка прибавляется некоторое смещение А. Это смещение А, представляет собой положительное число, равное максимальному абсолютному значению исходного порядка, как числа со знаком. В результате полученное значение смещенного порядка будет всегда иметь положительное значение и операции с порядками существенно упрощаются. В качестве смещения - А, для восьмиразрядного значения порядка (при формате КВ), можно брать либо число 10000000 либо число 01111111. При этом все положительные порядки в смещенном виде будут иметь в старшем разряде 1, а все отрицательные – 0.

В случае смещения А = 10000000, при нулевом значении исходного порядка, смещенный порядок будет равен: А + 0 = 10000000. Поэтому говорят, что имеет место смещенный порядок с положительным нулем.

В случае смещения А = 01111111, при нулевом значении исходного порядка, смещенный порядок будет равен: А + 0 = 01111111. Поэтому говорят, что в этом случае имеет место смещенный порядок с отрицательным нулем.

Отметим, что в большинстве персональных компьютеров обычно используется смещенный порядок с отрицательным нулем. И, например, число: -110,0101В, в полулогарифмическом виде (в форме представления чисел с плавающей запятой) имеющее вид: -2+2·1,100101, в формате короткого вещественного (КВ) со смещенным порядком с отрицательным нулем, в ячейке памяти разместиться так, как показано на рис. V.1.2.

Рис. V.1.2. Размещение в ячейке памяти числа: -110,0101 в формате КВ со

смещенным порядком с отрицательным нулем.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]