Представление чисел в компьютере
Операции с двоичными числами
Правила выполнения арифметических действий над двоичными числами такие же, как и в десятичной системе, и задаются таблицами двоичного сложения, вычитания и умножения (табл. 1.2)
Таблица 1.2
Арифметические действия над двоичными числами
Таблица двоичного сложения | Таблица двоичного вычитания | Таблица двоичного умножения |
0 + 0 = 0 0 + 1 = 1 1 + 0= 1 1 + 1 = 10 | 0 - 0 = 0 1 - 0 = 1 1 – 1 = 0 10 - 1 = 1 | 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1 |
При сложении двоичных чисел производится сложение цифр слагаемых в каждом разряде и единиц переноса из соседнего младшего разряда, если они имеются. При этом необходимо учитывать, что в двоичной системе переполнение разряда наступает при количестве единиц, больше либо равном двум. В случае переполнения нужно вычесть из текущего разряда число, равное основанию системы (в данном случае — 2), и добавить единицу переноса в следующий старший разряд.
Прежде чем рассматривать приведенные ниже примеры, полезно попробовать получить для различных систем счисления порядковые последовательности путем прибавления единицы к предыдущему числу, начиная с нуля, а потом сравнить их с соответствующими столбцами таблицы. Затем попробуйте получить последовательности путем вычитания в обратном порядке.
Пример.
Выполните сложение двоичных чисел X, Y, Z: а) X = 1101, Y= 101;
Ответ: 1101 + 101 = 10 010.
б) Х = 1101, Y = 101, Z=111;
Ответ: 1101 + 101 + 111 = 11 001.
При вычитании двоичных чисел аналогично вычитанию десятичных может возникнуть необходимость займа единицы из предыдущего старшего разряда. Эта занимаемая единица переносится в текущий разряд как двойка (количество единиц, равное основанию).
Пример.
Заданы двоичные числа Х = 10010 и Y = 101. Вычислите Х-Y.
Ответ: 10010- 101 = 1101.
Умножение двоичных чисел оказывается гораздо проще десятичных и сводится к операциям сдвига и сложения.
Пример.
Заданы двоичные числа Х=1001 и Y= 101 Вычислите Х * Y
Ответ: 1001 * 101 = 101101.
Выполнение деления в двоичной системе также проще, чем в десятичной, и сводится к операциям сравнения, сдвига и вычитания.
Пример.
Заданы двоичные числа Х= 1100,011 и Y= 10,01. Вычислите X : Y.
Ответ: 1100,011 : 10,01 = 101,1.
В компьютере числовая информация представляется в двух формах:
— с фиксированной точкой (естественная форма);
— с плавающей точкой (экспоненциальная форма).
При представлении чисел с фиксированной точкой подразумевается, что положение точки, разделяющей число на целую и дробную части, неизменно для всех чисел. Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому не всегда приемлема при вычислениях. В современных компьютерах естественная форма используется, например, для представления целых чисел (дробная часть числа всегда отсутствует), денежных сумм (дробная часть всегда составляет четыре знака).
Представление с плавающей точкой любого числа N в общем виде описывается следующей формулой:
N = ± М * р±к, (6)
где ±М — мантисса (дробная часть) числа;
р — основание системы счисления;
±к — порядок (целое число), при этом положительный знак мантиссы и порядка может опускаться, а при указании порядка в десятичной системе принято использовать символ Е. Например, десятичное число с фиксированной точкой 123,45 может быть представлено в форме с плавающей точкой как 0,12345 * 103, или, как это принято, 1.2345Е+02. Такая форма представления имеет огромный диапазон отображения чисел и является основной в современных компьютерах.
Исходные данные в ЭВМ хранятся в виде двоичных чисел, т. е. записываются в виде последовательности нулей и единиц. В памяти компьютера одна двоичная цифра записывается в один двоичный разряд, называемый битом. За единицу представления данных принят байт — 8 бит, поэтому число разрядов ячеек памяти всегда кратно 8, а данные имеют байтовую структуру, т.е. состоят из определенного числа байтов.
Для представления положительных и отрицательных чисел используются специальные коды: прямой, обратный и дополнительный. Причем два последних позволяют заменить неудобную для компьютера операцию вычитания на операцию сложения с отрицательным числом; дополнительный код обеспечивает более быстрое выполнение операций при помощи сумматора, поэтому в компьютерах применяется чаще именно он. Рассмотрим правила кодирования на примере целых чисел.
Для перевода числа в прямой код знак числа опускается, а в старший (знаковый) разряд ставится 0, если число положительное, и 1, если число отрицательное. Младшие разряды кода являются двоичным представлением модуля числа. Оставшиеся разряды кода заполняются нулями. Отметим, что перевод положительных чисел в прямой, обратный и дополнительный коды не изменяет изображения этих чисел (табл. 1.3).
Таблица 1.3 Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах
Число | Прямой код | Обратный код | Дополнительный код |
0000 0000 0000 0000 | 0000 0000 0000 0000 | 0000 0000 0000 0000 | |
0000 0000 0000 0001 | 0000 0000 0000 0001 | 0000 0000 0000 0001 | |
-1 | 1000 0000 0000 0001 | 1111 1111 1111 1110 | 1111 1111 1111 1111 |
0000 0000 0001 0100 | 0000 0000 0001 0100 | 0000 0000 0001 0100 | |
-20 | 1000 0000 0001 0100 | 1111 1111 1110 1011 | 1111 1111 1110 1100 |
Для перевода отрицательного числа в обратный код необходимо все, кроме знакового, разряды прямого кода проинвертировать (заменить нули на единицы, а единицы на нули).
Для перевода отрицательного числа в дополнительный код необходимо к младшему разряду его обратного кода прибавить единицу.
Перевод отрицательного числа из дополнительного кода в прямой осуществляется в обратной последовательности: сначала вычитается единица, затем инвертируются разряды. Положительное число (0 в старшем разряде) обратному переводу не подвергается, поскольку имеет одинаковую запись как в прямом коде, так и в дополнительном.