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

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

целые положительные числа (без знака)

целые со знаком

вещественные нормализованные числа. (иррац (бесконечные непериодические дроби, Пи, корень из двух..) и рацион (m/n или бесконечные периодические дроби))

Целые числа без знака.

Память в компьютере имеет байтовую структуру. Целые без знака обычно занимают один,  два или более байт. В однобайтовом формате они могут принимать значения в диапазоне от 0 до 255, в двухбайтовом от 0 до 65535. Здесь попытка представить в байтовом формате число 258 будет интерпретироваться как ошибка.

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

 

Пример:

7210=10010002

в байтовом формате:

7          6          5          4          3          2          1          0

0          1          0          0          1          0          0          0

 

Над целыми числами определены операции сложения (по правилам двоичного сложения) и умножения (по правилам двоичного умножения). Определены именно эти операции, так как они не меняют тип результата. Вычитание и деление не определены.

Целые числа со знаком

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

Прямой код

При кодировании прямым n-разрядным двоичным кодом один разряд (как правило самый старший) отводится для знака числа. Остальные n-1 разрядов – для значащих цифр. Значение знакового разряда равно 0 для положительных чисел, 1 – для отрицательных.

Пример: 1 = 0000 0001, -1 = 1000 0001

Обратный код

Он получается инвертированием всех цифр двоичного кода абсолютной величины числа.

Например:

число: -1

код модуля: 00000001

обратный код: 11111110

Отрицательные числа в компьютерах представляются в ДОПОЛНИТЕЛЬНОМ КОДЕ. Для получения дополнительного кода двоичного числа необходимо инвертировать это число (заменить все 0 на 1, а 1 на 0) , т.е получить обратный код числа, а затем прибавить в младшем разряде 1.

Например: Используется 6 разрядное представление двоичных чисел. 7 = 000111; -7 = 111001 – это дополнительный код.

Дополнительный код получен так:

1) инверсия  000111 равна 111000:

2) добавляем 1:

111000

+          1

_________________

111001 – это представление числа -7 в дополнительном коде.

При таком представлении чисел вычитание двух чисел  А – В  выполняется как сложение А + (-В).

Например:     001100   =  12

+

111001   =  -7 в дополнительном коде

_______________________________________________

(1)  000101   =   5

единица переноса в старший разряд при  выполнении операции

отбрасывается.

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

Пример: Для числа -1101:

 

Прямой код Обратный код Дополнительный код
10001101 11110010 11110011

 

 

 

 

Замечание: для положительных чисел представление числа в прямом, обратном и дополнительном кодах совпадают. Т. образом  – положительные числа всегда изображаются одинаково – двоичными кодами с цифрой 0 в знаковом разряде.

Операции

над целыми без знака определены сложение, вычитание (сводится к сложению с дополнительным кодом), умножение, целочисленное деление и нахождение остатака от деления.

Сдвиг числа на один разряд влево увеличивает число в 2 раза; сдвиг на один разряд вправо – уменьшает его в 2 раза:

В компьютерах числа представляются в двоичной форме с определенным количеством разрядов. Обычно разрядность компьютеров равна одному из следующих значений: 8, 16, 32, 64.

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

N = 2n

Например, если разрядность компьютера равна 16, то количество различных двоичных последовательностей будет равно

216 = 26+10  =  64 * 1024 = 65536.

 

КОММЕНТАРИИ