Кодирование информации
Любая информация, с которой работает современная вычислительная техника, преобразуется в числа в двоичной системе счисления.
Дело в том, что физические устройства (регистры, ячейки памяти) могут находиться в двух состояниях, которым соотносят 0 или 1. Используя ряд подобных физических устройств, можно хранить в памяти компьютера почти любое число в двоичной системе счисления. Сколько физических ячеек используемых для записи числа, столько и разрядное число можно записать. Если ячеек 8, то и число может состоять из 8 цифр.
Кодирование в компьютере целых чисел, дробных и отрицательных, а также символов (букв и др.) имеет свои особенности для каждого вида. Например, для хранения целых чисел выделяется меньше памяти (меньше ячеек), чем для хранения дробных независимо от их значения.
Однако, всегда следует помнить, что любая информация (числовая, текстовая, графическая, звуковая и др.) в памяти компьютера представляется в виде чисел в двоичной системе счисления (почти всегда).
В общем смысле кодирование информации можно определить как перевод информации, представленной сообщением в первичном алфавите, в последовательность кодов.
Надо понимать, что любые данные - это так или иначе закодированная информация. Информация может быть представлена в разных формах: в виде чисел, текста, рисунка и др. Перевод из одной формы в другую - это кодирование.
Натуральные числа (целые положительные числа)
Обычно ячейка памяти равна 1 байту, который в свою очередь равен 8 битам. Т.е. в одной ячейке памяти можно сохранить восьмиразрядное число в двоичной системе счисления. Очевидно, что минимальным таким числом будет 00000000, а максимальным 11111111.
Если представить число 11111111 в десятичной системе счисления, то мы получим число 255. Т.е в одном байте можно сохранять целые положительные числа от 0 до 255 включительно (всего 256 значений, что соответствует 28).
Для хранения чисел имеющих значение большее, чем 255, используют большее количество байтов. Так в двух байтах можно хранить число, состоящее из 16 разрядов. Можно узнать количество возможных комбинаций нулей и единиц для 16-ти разрядного числа: 216 = 65536. Т.е. в двух байтах можно сохранить любое число от 0 до 65535.
Для примера посчитаем, количество значений, которые можно сохранить, если использовать 4-х байтную ячейку памяти (такая ячейка имеет 32 разряда):
232 = 4 294 967 296,
т.е. более 4 миллиардов.
Представление положительных и отрицательных чисел в памяти компьютера. Прямой и дополнительный код числа
Прямой код
Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1.
Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семиразрядное число. Например:
0 00011010 - положительное число
1 00011010 – отрицательное число
Количество значений, которые можно поместить в семиразрядной ячейке со знаком в дополнительном разряде равно 256. Это совпадает с количеством значений, которые можно поместить в восьмиразрядную ячейку без указания знака. Однако диапазон значений уже другой, ему принадлежат значения от -128 до 127 включительно (при переводе в десятичную систему счисления).
При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел.
Для отрицательных чисел используется так называемый дополнительный код. Это связано с удобством выполнения операций над числами электронными устройствами компьютера.
Дополнительный код
В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.
Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.
Далее следует прибавить единицу к получившемуся инверсией числу:
1 1110011 + 1 = 1 1110100
В итоге и получается число, которое принято называть дополнительным кодом числа.
Причина, по которой используется дополнительный код числа для представления отрицательных чисел, связана с тем, что так проще выполнять математические операции. Например, у нас два числа, представленных в прямом коде. Одно число положительное, другое – отрицательное и эти числа нужно сложить. Однако просто сложить их нельзя. Сначала компьютер должен определить, что это за числа. Выяснив, что одно число отрицательное, ему следует заменить операцию сложения операцией вычитания. Потом, машина должна определить, какое число больше по модулю, чтобы выяснить знак результата и определиться с тем, что из чего вычитать. В итоге, получается сложный алгоритм. Куда проще складывать числа, если отрицательные преобразованы в дополнительный код. Это можно увидеть на примерах ниже.
Дата добавления: 2016-03-22; просмотров: 1200;