Представление целых чисел в памяти ЭВМ. Индикаторы переноса и переполнения
Для упрощения будем разбирать четырехбитовые машинные слова. Такой размер слова обеспечивает хранение десятичных чисел всего лишь от 0 до 15 (если брать только положительные целые числа). Однако закономерности, обнаруженные на примере четырехбитовых слов, сохраняют силу для машинного слова любого размера.
Предположим, что процессор ЭВМ способен увеличивать (прибавлять 1) и дополнять (инвертировать) четырехбитовые слова. Например, результатом увеличения слова 1100 является 1101, а результатом дополнения этого слова является 0011. Рассмотрим слово 0000, представляющее десятичное число 0. В результате увеличения содержимое этого слова станет равным 0001, что соответствует десятичному числу 1. Продолжая последовательно увеличивать четырехбитовые слова, придем к ситуаци, когда, увеличивая слово 1111 (которое представляет десятичное число 15), получим в результате слово 0000, т.е. 1111 + 1 = (1)0000. Т.е. Получили неверную арифметическую операцию и вернулись в исходное состояние. Это произошло из-за того, что слово памяти может состоять из конечного числа бит. Таким образом, числовая система ЭВМ является конечной и цикличной.
Можно битовую конфигурацию 1111 принять за код для -1. Тогда 1110 интерпретируется как -2, 1101 как -3, 1000 как -8. Тем самым получили другую числовую систему — со знаком, содержащую как положительные, так и отрицательные числа. В этой системе половина четырехбитовых конфигураций, начинающаяся с единицы, интерпретируется как отрицательные числа, а другая половина, начинающаяся с нуля, - как положительные числа или нуль. Поэтому старший бит числа (третий по счету, если нумерацию бит начинать с нуля справа налево) называется знаковым битом. Числовая система со знаком также конечна и циклична, арифметически неверный результат даст попытка увеличить число 7 на единицу (0111 + 1 = 1000 = -810).
Если знаковый бит равен нулю, то значение числа легко вычисляется — игнорируется знаковый бит, а оставшиеся три бита интерпретируются как двоичный код десятичного числа. Например, слово 0110 представляет двоичное число 110, которое равно десятичному числу 6.
Для оценки отрицательного числа нужно изменить его знак. Рассмотрим четырехбитовое число k в системе со знаком. Тогда -k = (-1 - k) + 1, следовательно, для вычисления значения -k необходимо вычесть k из -1 (т.е. из 1111) и затем прибавить единицу. Заметим, что операция вычитания всегда возможна, никогда не требует заема и равнозначна операции инвертирования битов вычитаемого. Например, 1111 - 1011 = 0100; здесь в вычитаемом, равном 1011, единицы перешли в нули, а нуль — в единицу. Инвертирование бит в слове называется дополнением до единицы. Для определения отрицательного значения числа k надо к его дополнению до единицы прибавить единицу (согласно вышеприведенному равенству). Инвертирование бит в слове с добавлением единицы к младшему биту называется дополнением до двух. Например, требуется найти, какое число закодировано в слове 1001. Для этого сначала выполняем операцию инвертирования: 1001 -> 0110, а затем к полученному результату прибавляем единицу 0110 + 1 = 0111, что является двоичным кодом числа 7. Таким образом, значением 1001 является число -7.
Дата добавления: 2016-03-22; просмотров: 783;