Лекция 3. Кодирование информации в ЭВМ: 1)Представление чисел в разрядной сетки в форме с фиксированной запятой, с плавающей запятой. 2)Кодирование чисел. Прямой, обратный и дополнительные коды Представление чисел в разрядной сетки в форме с фиксированной запятой, с плавающей запятой. При выполнении вычислений на бумаге количество разрядов в числах не ограничивается. Иначе происходит при расчетах на ЭВМ, поскольку в них для размещения чисел отводится некоторое ограниченное число разрядов, получившее название "разрядная сетка". Условно разрядную сетку можно представить в виде заданного числа квадратов, в каждом из которых записана двоичная цифра 1 или 0 (рис. 1). Вырабатываются эти уровни напряжений двухпозиционными электронными элементами, входящими в те или иные устройства ЭВМ. Наиболее часто для этой цели используются триггеры. Условное графическое обозначение одного из триггеров, используемых для представления двоичных цифр, приведено на рис 3 Представление целых двоичных чисел При обработке данных в ЭВМ различают следующие типы целых чисел: целые числа со знаком и без знака. Форматы для представления таких чисел, показаны на рис. 4. Разрядная сетка для представления n-разрядных целых чисел со знаком представлена на рис. 5. Коэффициенты ai (i = 0, 1, 2,…, n-1) – это цифры двоичной системы счисления, стоящие при соответствующих степенях основания этой системы счисления. Для представления знака числа используется дополнительный, обычно крайний слева, знаковый разряд зн, в котором знак " + " изображается цифрой "0", а знак " - " цифрой "1". Положение точки мысленно фиксируется справа от младшего разряда a0. В новейших микропроцессорах РС (начиная с Pentium 3 и выше) имеется устройство для выполнения целочисленных операций над двоичными и двоично-десятичными числами. В этом устройстве предусмотрены следующие форматы целых двоичных чисел (табл. 1). Формат Размер (бит) Диапазон значений Байт без знака 8 - от 0 до 255 Байт со знаком 8 - от –128 до +127 Слово без знака 16 - от 0 до 65535 Слово со знаком 16 - от –32768 до +32767 Удвоенное слово без знака 32 - от 0 до 232-1 Удвоенное слово со знаком 32 - от –231 до +232 - 1 Представление целых десятичных чисел Десятичные числа представляются в двоично-десятичном коде (BCD – Binary Coded Decimal). BCD-числа могут храниться в двух форматах (рис. 6): -упакованный формат (каждый байт содержит две десятичные цифры в диапазоне от 0 до 9); -неупакованный формат (каждый байт содержит одну десятичную цифру). Кодирование чисел. Прямой, обратный и дополнительные коды Код отрицательной мантиссы Код положительного порядка (-) (+) 1 1 1 0 1 0 1 место точки … 0 1 0 1 1 0 1 0 1 место точки … 1 0 1. В случае правильных дробей разряд целой части, стоящий слева от точки и равный нулю, отбрасывается. На его месте располагается код знака "+", тоже равный нулю. Все остальные разряды дроби записываются без изменения. Пример 1. Записать число X = + 0.110111 в прямом, обратном и дополнительном кодах. Действуя согласно правилу, получим: [X]пр = [X]обр = [X]доп = 0 110111. 2. В случае целых чисел перед старшим разрядом числа вместо знака "+" ставится его код, равный нулю. Остальные разряды целого числа переписываются без изменения. Пример 2. Записать целое число Y = +101011 в прямом, обратном и дополнительном кодах. Действуя согласно правилу, получим: [Y]пр = [Y]обр= [Y]доп = 0 101011. 1. Для записи прямого кода отрицательной дроби необходимо отбросить разряд целых, равный нулю. Вместо разряда целых, стоящего слева от точки, поставить код знака "-", равный единице. Остальные разряды дроби переписать без изменения. Пример 3. Записать дробное число X = - 0,101010 в прямом коде. Действуя согласно правилу, получим: [X]пр = 1 101010. Для записи прямого кода целого отрицательного числа необходимо вместо знака числа "-" поставить единицу. Остальные разряды целого числа переписать без изменения. Пример 4. Записать целое число Y = - 110111 в прямом коде. Действуя согласно правилу, получим: [Y]пр = 1 110111. Прямой код используется при хранении чисел в ЭВМ, а также при выполнении арифметических действий с положительными числами 2. Для записи обратного кода отрицательной дроби необходимо вместо нуля в разряде целых, стоящего слева от запятой, поставить код знака "-", равный единице. Остальные разряды дроби инвертируются, т. е. единицы заменяются нулями, а нули - единицами. Пример 5. Записать число X = - 0,101110 в обратном коде. Действуя согласно правилу, получим: [X]обр = 1 010001. Для записи обратного кода целого отрицательного числа необходимо вместо знака числа "-" поставить единицу. Остальные разряды целого числа проинвертировать. Пример 6. Записать число Y = - 110111 в обратном коде. Действуя согласно правилу, получим: [Y]обр = 1 001000. Для получения дополнительного кода отрицательной дроби или целого числа необходимо: записать обратный код дроби или целого числа; затем, добавить к младшему разряду обратного кода единицу. Пример 7. Записать число X = - 0,101110 в дополнительном коде. Для решения этой задачи образуем сначала обратный код числа X [X]обр = 1 010001, а затем к младшему разряду обратного кода добавим единицу [X]доп = 1 010001 Пример 8. Записать дополнительный код числа Y = - 110111. Действуя аналогично, получим дополнительный код целого числа, а затем, добавляя к младшему разряду обратного кода единицу, получим дополнительный код числа Y. Литература 1) Основы вычислительной техники: Учебное пособие/ Д.П. Гонтов, К.Г. Кречетников и др: Владивосток: ТОВВМУ, 1996. 2) Каган Б.М. Электронные вычислительные машины и системы: Учебное пособие для вузов. – М.: Энергоатомиздат, 3) Калиш Г.Г. Основы вычислительной техники. Учеб. пособ. для средн. проф. учебных заведений. – М.: Высш. Шк., 2000. 4) Евреинов Э. В. Цифровая и вычислительная техника. – М.: Энергоатомиздат, 1991. 5) Цифровые устройства и микропроцессоры. Сборник заданий для лабораторных работ/ А. А. Гайзюмов, Д. П. Гонтов, А. Н. Карелин и др.: Владивосток: ТОВМИ, 1999.