logo
Informatics

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

Введем основные понятия на примере 4-битовых машинных слов. Такой размер слова обеспечивает хранение десятичных чисел только

от 0 до 15 и поэтому не представляет практического значения.

Однако они менее громоздки, а основные закономерности, обнаруженные на примере 4-битовых слов, сохраняют силу для машинного слова любого размера.

Предположим, что процессор ЭВМ способен увеличивать (прибавлять 1) и дополнять (инвертировать) 4-битовые слова. Например, результатом увеличения слова 1100 является 1101, а результатом дополнения этого слова является 0011. Рассмотрим слово 0000, представляющее десятичное число 0. В результате увеличения содержимое этого слова станет равным 0001, что соответствует десятичному числу 1. Продолжая последовательно увеличивать 4-битовые слова, придем к ситуации, когда, увеличивая слово 1111 (которое представляет десятичное число 15), получим в результате слово 0000, т.е. 111+1 = 0000 (15+1=0), при этом получили неверную арифметическую операцию и вернулись в исходное состояние. Это произошло из-за того, что слово памяти может состоять только из конечного числа битов. Таким образом, числовая система ЭВМ является конечной и цикличной.

Такой ситуации, приводящей к неверному арифметическому результату, можно избежать, если битовую конфигурацию 1111 принять за код для -1. Тогда 1110 интерпретируется как -2; 1101-3 и т.д. до 1000-8. Тем самым получили другую числовую систему - со знаком, содержащую как положительные, так и отрицательные числа.

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

Если знаковый бит равен нулю, то значение числа легко вычисляется - игнорируется знаковый бит, а оставшиеся три бита интерпретируются как двоичный код десятичного числа. Например, слово 0110 представляет двоичное число 110, которое равно десятичному числу 6.

Для оценки отрицательного числа нужно изменить его знак. рассмотрим четырехбитовое число k в системе со знаком. Тогда -k=(-1-k)+1, следовательно, для вычисления значения - k необходимо вычесть k из -1 (т.е. из 1111) и затем прибавить 1 (т.е. 0001).

Заметим, что операция вычитания всегда возможна, никогда не требует заема и равнозначна операции инвертирования битов вычитаемого. Например, 1111 - 1011 = 0100, здесь в вычитаемом, равном 1011, единицы перешли в нули, а нуль - в единицу. Инвертирование битов в слове называется дополнением до единицы. Для определения отрицательного значения числа -k надо к его дополнению до единицы прибавить единицу (согласно вышеприведенному равенству). Инвертирование битов в слове с добавлением единицы к младшему биту называется дополнением до двух. Например, требуется найти, какое число закодировано в слове 1001. Для этого сначала выполняем операцию инвертирования 1001 -> 0110, а затем к полученному результату прибавляем единицу 0110+1 =0111, что является двоичным кодом числа 7. Таким образом, значением 1001 является отрицательное 7, т.е. -7.