Представление чисел в компьютере

Операции с двоичными числами

Правила выполнения арифметических действий над двоич­ными числами такие же, как и в десятичной системе, и зада­ются таблицами двоичного сложения, вычитания и умножения (табл. 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 в старшем разряде) обратному переводу не подвергается, поскольку имеет одинаковую запись как в прямом коде, так и в дополнительном.