Основы информационных технологий

Информационно-логические основы ЭВМ

Разбить на страницы
Показывать лекцию целиком

Системы счисления

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

Различают позиционные и непозиционные системы счисления. В позиционных системах каждая цифра числа имеет определенный вес, который зависит от позиции цифры в последовательности, изображающей число. Позиция цифры называется разрядом. В позиционной системе счисления любое число можно представить в виде:

$$A_n=a_{m-1}a_{m-2} \dots a_i \dots a_0*a_{-1}a_{-2}\dots a_{-k}=a_{m-1}*N^{m-1}+a_{m-2}*N^{m-2}\dots+a_{-k}*N^{-k}$$ $$A_N=\sum_{i=-k}^{m-1}a_i*N^i$$

где $$a_i$$ - $$i$$-я цифра числа;

$$k$$ - количество цифр в дробной части числа;

$$m$$ - количество цифр в целой части числа;

$$N$$ - основание системы счисления.

Основание системы счисления $$N$$ показывает, во сколько раз "вес" $$i$$-го разряда больше ($$i-1$$) разряда. Целая часть числа отделяется от дробной части точкой (запятой).

Пример 14.1. $$A_{10}=37.25$$.

В соответствии с формулой (14.1) это число формируется из цифр с весами разрядов:

$$A_{10}=3-10^1+7-10^0+2-10^{-1} + 5-10^{-2}$$

Теоретически наиболее экономичной системой счисления для представления значения числа цифрами является система с основанием $$е =2,71828\dots$$, находящимся между числами 2 и 3.

Во всех современных ЭВМ для представления числовой информации применяется двоичная система счисления. Это обусловлено:

  • более простой реализацией алгоритмов выполнения арифметических и логических операций;
  • более надежной физической реализацией основных функций, так как они имеют всего два состояния (0 и 1);
  • экономичностью аппаратной реализации всех схем ЭВМ.
  • При $$N=2$$ число различных цифр, используемых для записи чисел, ограничено множеством из двух цифр (нуль и единица). Кроме двоичной системы счисления, широкое распространение получили и производные системы:

  • двоичная - $$\{0,1\}$$;
  • десятичная, точнее двоично-десятичное представление десятичных чисел - $$\{0, 1, \dots, 9\}$$;
  • шестнадцатеричная - $$\{0, 1, 2, \dots 9, A, B, C, D, E, F\}$$. Здесь шестнадцатеричная цифра $$A$$ обозначает число 10, $$B$$ - число 11, ..., $$F$$ - число 15;
  • восьмеричная (от слова восьмерик) - $$\{0, 1, 2, 3, 4, 5, 6, 7\}$$. Она широко используется во многих специализированных ЭВМ.
  • Восьмеричная и шестнадцатеричная системы счисления являются производными от двоичной, так как $$16=2^4$$ и $$8=2^3$$. Они применяются в основном для более компактного изображения двоичной информации, так как запись значения чисел производится существенно меньшим числом знаков

    Пример 14.2. Число $$A_{10}=100.625$$ в двоичной, восьмеричной и шестнадцатеричной системах счисления имеют следующее представление:

    $$А_2 =1100100.101;\\ A_8=144.5;\\ А_{16} = 64.А;\\ A_2=1*2^6+1*2^5+0*2^4+0*2^3+1*2^2+0*2^1+0*2^0+1*2^{-1}+0*2^{-2}+1*2^{-3};\\ A_8 =1*8^2+4*8^1+4*8^0+5*8^{-1};\\ A_{16} =6*16'+4*16^0+10*16^{-1}.$$

    В табл. 14.1 приведено сравнительное представление чисел в различных системах счисления: десятичной (10 с/с), двоичной (2 с/с), восьмеричной (8 с/с) и шестнадцатеричной (16 с/с).

    По данным этой таблицы можно выявить целый ряд закономерностей:

  • нуль и единица имеют единственное и одинаковое представление в любых системах счисления;
  • основание системы счисления в любой системе имеет представление 10;
  • незначащие нули слева от целой части и справа от дробной части числа не изменяют значений чисел;

    Представление чисел в различных системах счисления
    10c/c 2c/c 8c/c 16c/c 10c/c 2c/c 8c/c 16c/c
    Целые числа Целые числа
    0 00000 0 0 10 01010 12 A
    1 00001 1 1 11 01011 13 B
    2 00010 2 2 12 01100 14 C
    3 00011 3 3 13 -1101 15 D
    4 00100 4 4 14 01110 16 E
    5 00101 5 5 15 01111 17 F
    6 00110 6 6 16 10000 20 10
    7 00111 7 7 17 10001 21 11
    8 01000 10 8 18 10010 22 12
    9 01001 11 9 и.т.д.
    Дробные числа Дробные числа
    0.5 0.1 0.4 0.8 0.0625 0.0001 0.04 0.1
    0.25 0.01 0.2 0.4 0.03125 0.00001 0.02 0.08
    0.125 0.001 0.1 0.2 и т.д.
  • представление чисел в различных системах счисления допускает однозначное их преобразование из одной системы в другую.
  • В ЭВМ перевод из одной системы в другую осуществляется автоматически, по специальным программам. Правила перевода целых и дробных чисел отличаются.

    Необходимо сделать несколько замечаний. В общем случае перевод любого числа с дробью из одной системы счисления в другую может привести к появлению иррациональных чисел, имеющих бесконечное количество разрядов в дробной части чисел. Естественно, что любое техническое устройство, например компьютер, может оперировать только с конечным числом цифр, являющихся старшими, наиболее значимыми разрядами.

    Игнорирование, отбрасывание младших разрядов чисел приводит к их округлению. При этом разница между округляемым и полученным числами называется ошибкой округления. Следует учитывать, что округление результатов вычислений по любому неслучайному правилу приводит к ошибкам с ненулевым смещением [83].

    Перевод целых чисел

    Целое число с основанием $$N1$$ переводится в систему счисления с основанием $$N2$$ путем последовательного деления числа $$A_{Ni}$$ на основание $$N2$$, записанного в виде числа с основанием $$N1$$, до получения остатка. Полученное частное следует вновь делить на основание $$N2$$, и этот процесс надо повторять до тех пор, пока частное не станет меньше делителя.

    Полученные остатки от деления и последнее частное записываются в порядке, обратном полученному при делении. Сформированное число и будет являться числом с основанием $$N2$$.

    Пример 14.3. $$A_{10}=37, A_2=?, A_{16}=?$$

    Перевод дробных чисел

    Дробное число с основанием $$N1$$ переводится в систему счисления с основанием $$N2$$ путем последовательного умножения <<Eqn010.eps>> на основание $$N2$$, записанное в виде числа с основанием $$N1$$. При каждом умножении целая часть произведения берется в виде очередной цифры соответствующего разряда, а оставшаяся дробная часть принимается за новое множимое. Число умножений определяет разрядность полученного результата, представляющего число $$A_{Ni}$$ в системе счисления $$N2$$.

    Пример 14.4. $$A_{10}=0.625; A_2=?; A_8=?; A_{16}=?$$

    Так как двоичная, восьмеричная и шестнадцатеричная системы связаны через степени числа 2, то преобразования между ними можно вы-полнять другим, более простым способом. Для перевода из шестнадцатеричной (восьмеричной) системы счисления в двоичную достаточно двоичным кодом записать шестнадцатеричные коды цифр тетрадами (по 4 двоичных разряда) и триадами (по 3 двоичных разряда) - для восьмеричных цифр. Обратный перевод из двоичного кода производится в обратном порядке: двоичное число разбивается влево и вправо от границы целой и дробной частей на тетрады - для последующей записи цифр в шестнадцатеричном представлении, на триады - для записи их значений восьмеричными цифрами.

    Арифметические основы ЭВМ

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

    В компьютерах используются три вида чисел: с фиксированной точкой (запятой), с плавающей точкой (запятой) и двоично-десятичное представление. Точка (запятая) - это подразумеваемая граница целой и дробной частей числа, разряды $$k$$ и$$т$$ формулы (4.1).

    Все современные компьютеры имеют центральный процессор или центральное процессорное устройство - CPU (Central Processing Unit), предназначенное для обработки чисел с фиксированной точкой. Одной из важнейших его характеристик является разрядность $$п$$ - количество двоичных разрядов, представляющих значение числа. Основным достоинством CPU служит простота алгоритмов выполнения операций и, соответственно, высокая скорость операций.

    У чисел с фиксированной точкой в двоичном формате предполагается строго определенное место точки (запятой). Обычно это место определяется или перед первой цифрой числа, или после последней цифры числа. Если точка фиксируется перед первой значащей цифрой, то это означает, что число по модулю меньше единицы. Диапазон изменения значений чисел определяется неравенством:

    $$2^{-n} \le |A_2| \le 1-26{-n}$$

    Если точка фиксируется после последней цифры, то это означает, что $$n$$-разрядные двоичные числа являются целыми. Диапазон изменения их значений составляет:

    $$- \le |A_2| \le 2^n-1$$

    Перед самым старшим из возможных цифровых разрядов двоичного числа фиксируется его знак. Положительные числа имеют нулевое значение знакового разряда, отрицательные - единичные. Каждая цифра двоичного числа $$\{0,1\}$$ занимает один бит соответствующего $$n$$-разрядного формата.

    Существенным недостатком представления чисел с фиксированной точкой служит тот факт, что аппроксимация малых чисел связана с большой относительной ошибкой. Для чисел же, приближающихся по величине к максимально возможным ($$2n$$), относительная ошибка уменьшается. Абсолютная же ошибка представления чисел с фиксированной точкой всегда лежит в одних и тех же пределах независимо от величины чисел.

    Другой формой представления чисел является представление их в виде чисел с плавающей точкой (запятой). Представление чисел с плавающей точкой необходимо использовать, когда обрабатываемые числа имеют очень большой диапазон изменения. Эта ситуация типична для научно-технических расчетов (тригонометрические, экспоненты, логарифмы). Поэтому все современные микропроцессоры в качестве дополнения к CPU имеют математические сопроцессоры. Их обычно называют блоками или устройствами с плавающей точкой - FPU (Floating Point Unit), или числовым расширением процессора - NPX (Numeric Processor eXtension). Сочетание параллельно работающих CPU и FPU позволяет добиться большей скорости и большей точности вычислений.

    Числа с плавающей точкой представляются в виде мантиссы $$m_a$$ и порядка $$p_a$$, иногда это представление называют полулогарифмической формой числа. Например, число $$A_{10}=373$$ можно представить в виде $$0.373 . 10^3$$, при этом $$m_a = 0.373, p_a,=3$$, основание системы счисления подразумевается фиксированным и равным десяти. Для двоичных чисел $$A2$$ в этом представлении также формируется $$m_a$$ и порядок $$p_a$$ при основании системы счисления, равном двум.

    $$А_2=\pm р_а; \pm т_а$$

    что соответствует записи

    $$A_2=2^{\pm p_a}*(\pm m_a)$$

    Детализация двоичного представления чисел с плавающей точкой и двоично-десятичная форма чисел подробно освещены в [88]. Поскольку их представление и обработка базируются на двоичной арифметике, рассмотрим правила сложения двоичных цифр.

    Все современные ЭВМ имеют достаточно развитую систему команд, включающую десятки и сотни машинных операций. Однако выполнение любой операции основано на использовании простейших микроопераций типа сложения и сдвига. Это позволяет иметь единое арифметико-логическое устройство для выполнения любых операций, связанных с обработкой информации. Сложение двоичных цифр двух чисел $$A$$ и $$B$$ иллюстрируется табл. 14.2.

    Правила сложения двоичных цифр
    Значения двоичных чисел А и В Разряд суммы Перенос в следующий разряд
    $$a_i$$ $$b_i$$ $$p_{i-1}$$ $$S_i$$ $$P_i$$
    0 0 0 0 0
    0 0 1 1 0
    0 1 0 1 0
    0 1 1 0 1
    1 0 0 1 0
    1 0 1 0 1
    1 1 0 0 1
    1 1 1 1 1

    Здесь показаны правила сложения двоичных цифр $$a_i$$, $$b_i$$ одноименных разрядов с учетом возможных переносов из предыдущего разряда $$p_{i-1}$$.

    Подобные таблицы можно было бы построить для любой другой арифметической и логической операции (вычитание, умножение и т.д.), но именно данные этой таблицы положены в основу выполнения любой операции ЭВМ. Под знак чисел отводится специальный знаковый разряд. Знак "+" кодируется двоичным нулем, а знак "-" - единицей. Действия над прямыми кодами двоичных чисел при выполнении операций создают большие трудности, связанные с необходимостью учета значений знаковых разрядов:

  • во-первых, следует отдельно обрабатывать значащие разряды чисел и разряды знака;
  • во-вторых, значение разряда знака влияет на алгоритм выполнения операции, например, сложение может заменяться вычитанием и наоборот.
  • Во всех ЭВМ без исключения все операции выполняются над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и цифровые разряды, а также заменять операцию вычитания операцией сложения.

    Различают прямой код (П), обратный код (ОК) и дополнительный код (ДК) двоичных чисел.

    Машинные коды

    Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (нуль или единица) перед его старшим числовым разрядом.

    Пример 14.5.

    $$A_{10} = +10\; A_2 = +1010\; [А_2]_п=0 \vdots 1010; \\ B_{10}=-15\; B_2=-1111 \; [B_2]_n=1 \vdots 1111$$

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

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

    Пример 14.6.

    $$А_{10} = +5\; А_2=+101\; [А_2]_n=[А_2]_{ОК} = 0 \vdots 101; \\ В_{10}=-13\; В_2=-1101\; [B_2]_{0K}=1 \vdots 0010.$$

    Свое название обратный код чисел получил потому, что коды цифр отрицательного числа заменены инверсными. Укажем наиболее важные свойства обратного кода чисел:

  • сложение положительного числа $$С$$ с его отрицательным значением в обратном коде дает так называемую машинную единицу $$МЕ_{ок}=1\vdots 111\dots 11$$, состоящую из единиц в знаковом и значащих разрядах числа;
  • нуль в обратном коде имеет двоякое значение. Он может быть положительным числом - $$0 \vdots 00\dots 0$$ и отрицательным числом - $$1 \vdots 11\dots 11$$. Значение отрицательного нуля совпадает с $$МЕ_{ок}$$. Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
  • Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда ($$2^0$$- для целых чисел, $$2^{-k}$$ - для дробных).

    Пример 14.7.

    $$А_{10} =+19\; A_2=+10011\; [A_2]_n=[A_2]_{OK}=[A_2]_{ДК}=0 \vdots 10011;\\ B_{10}=-13\; B_2=-11-1\; [B_2]_{ДК}=[B_2]_{OK}+2^0=1 \vdots 0010+1=1 \vdots 0011$$

    Укажем основные свойства дополнительного кода.

  • Сложение дополнительных кодов положительного числа $$С$$ с его отрицательным значением дает так называемую машинную единицу дополнительного кода:

    $$МЕ_{дк}=МЕ_{ок}+20=10 \vdots 00\dots 00,$$

    т. е. число 10 (два) в знаковых разрядах числа.

  • Дополнительный код получил такое свое название потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы $$МЕ_{ДК}$$.
  • Нуль в дополнительном коде имеет единственное представление. Благодаря этому все современные компьютеры используют при хранении и преобразовании чисел именно двоичный код.
  • Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак "+" в этих кодах кодируется двумя нулевыми знаковыми разрядами, а "-" - двумя единичными разрядами.

    Пример 14.8.

    $$А_{10} = 9;\; A_2=+1001;\; [A_2]_n=[A_2]_{ок}=[A_2]_{ДK}= 0 \vdots 1001;\\ \[[A_2\]]_{мок}=[A_2]_{мдк}=00 \vdots 1001;\\ В_{10}=- 9;\; В_2 =-1001;\; [В_2]_{ок}= 1 \vdots 0110 \; [B_2]_{ДК}=1\vdots 0111;\\ \[[B_2\]]_{мок}=11 \vdots 0110; [B_2]_{МДК}=11 \vdots 0111.$$

    Целью введения модифицированных кодов является фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов "01" свидетельствует о положительном переполнении разрядной сетки, а "10" - об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ, в том числе во всех ПК, роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.

    Арифметические операции над числами с фиксированной точкой

    Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный (ОК) или дополнительный (ДК) код. Пусть числа $$А \ge 0$$ и $$В \ge 0$$, тогда операция алгебраического сложения выполняется в соответствии с табл. 14.3.

    Таблица преобразования кодов при алгебраическом сложении
    Требуемая операция Необходимое преобразование
    $$A+B$$ $$A+B$$
    $$A-B$$ $$A+(-B)$$
    $$-A+B$$ $$ (-A)+B$$
    $$-A-B$$ $$ (-A)+(-B)$$

    Зависимости, представленные в правой части таблицы, указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с табл. 14.2. При выполнении сложения цифр необходимо соблюдать следующие правила.

  • Слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа.
  • Знаковые разряды чисел участвуют в сложении так же, как и цифровые.
  • Необходимые преобразования кодов (п. 14.2) производятся с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.
  • При образовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом. При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
  • Пример 14.9. Сложить два числа $$A_{10}= 7; B_{10}= 16$$.

    $$A_2 = +111 = +0111; \\ B_2 = + 1000 = + 10000.$$

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

    $$[A_2]_п =[A_2]_{ок}= [A_2]_{ДК}=0 \vdots 00111;\\ \[[B_2\]]_п=[B_2]_{ок}=[B_2]_{ДК}=0 \vdots 10000.$$

    Сложение в обратном или дополнительном кодах дает один и тот же результат:

    $$\frac{\begin{matrix}0\;\vdots\;00111\\+0\;\vdots\; 10000 \end{matrix}}{C_2=0 \;\vdots\; 10111_2}\\C_{10}=+23$$

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

    Пример 14.10. Сложить два числа $$A_{10}= +16;\;B_{10}=-7$$ в ОК и ДК. В соответствии с табл. 14.3 должна быть реализована зависимость $$A+(-B)$$, в которой второй член преобразуется с учетом знака

    $$[A_2]_п=0\; \vdots \; 10000=0 \; \vdots \;10000;\;[A_2]_{oк}=0 \vdots \; 10000;\; [A_2]={ДК}=0 \; \vdots \; 10000\\ \[[B_2\]] _п=1\;\vdots111=1\;\vdots\;00111;\; [B_2]_{ок}=1\;\vdots \;11000;\;[B_2]_{ДК}=1\;\vdots\;11001$$

    При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (см. п. 4. правил). В случае ДК этот перенос игнорируется.

    Умножение. Умножение двоичных чисел наиболее просто реализуется в прямом коде. Рассмотрим, каким образом оно приводится к операциям сложения и сдвигам.

    Пример 14.11. Умножить два числа $$A_{10}=7;\; B_{10}=5$$. Перемножим эти числа, представленные прямыми двоичными кодами, так же, как это делается в десятичной системе.

    Нетрудно видеть, что произведение получается путем сложения частных произведений, которые представляют собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведения, полученные умножением на нуль, игнорируются. Важной особенностью операции умножения n-разрядных сомножителей является увеличение разрядности произведения до $$n+n=2n$$. Знак произведения формируется путем сложения знаковых разрядов сомножителей. Возможные переносы из знакового разряда игнорируются.

    Деление. Операция деления, как и в десятичной арифметике, является обратной операции умножения. Покажем, что и эта операция приводится к последовательности операций сложения и сдвига.

    Пример 14.12. Разделить два числа $$A_{10}=45;\; B_{10}=5$$.

    $$[А_2]_п= 101101\\ \[[B_2\]]_п=101$$

    Деление произведено так же, как это делается обычно в десятичной системе. Сначала проверяется, можно ли вычесть значение делителя из старших разрядов делимого. Если возможно, то в разряде частного записывается единица и определяется частная разница. В противном случае в частное записывается нуль, и разряды делителя сдвигаются вправо на один разряд по отношению к разрядам делимого. К полученной предыдущей разнице сносится очередная цифра делимого, и данный процесс повторяется, пока не будет получена необходимая точность. Если учесть, что все вычитания в ЭВМ заменяются сложением в ОК или в ДК (см. табл. 14.3), то действительно, операция деления приводится к операциям сложения и сдвигам вправо разрядов делителя относительно разрядов делимого. Отметим, что делимое перед операцией деления должно быть приведено к $$2n$$-разрядной сетке. Только в этом случае при делении на $$n$$-разрядный делитель получается $$n$$-разрядное частное.

    Знак частного формируется также путем сложения знаковых разрядов делимого и делителя, как это делалось при умножении.

    Логические основы ЭВМ

    Основные сведения из алгебры логики

    Теоретической основой построения ЭВМ служат специальные математические дисциплины. Одной из них является алгебра логики, или булева алгебра (Дж. Буль - английский математик XIX в., основоположник этой дисциплины). Ее аппарат широко используют для описания схем ЭВМ, их проектирования и оптимизации.

    Вся информация в ЭВМ представляется в двоичной системе счисления. Поставим в соответствие входным сигналам отдельных устройств ЭВМ соответствующие значения $$x_j(i=\overline{1,n})$$ , а выходным сигналам - значения функций $$y_j(j=\overline{1,m}$$) (рис.14.1).

    В этом случае зависимостями

    $$y_J=f{x_l,x_2,\dots,x_i,\dots,x_n),$$

    где $$x_i$$ -$$ i$$- й вход;

    $$n$$ - число входов;

    $$y_j$$ -$$j$$-й выход;

    $$т$$ - число выходов в устройстве, можно описывать алгоритм работы любого устройства ЭВМ. Каждая такая зависимость $$у_j$$ является "булевой функцией, у которой число возможных состояний и каждой ее независимой переменной равно двум" (стандарт ISO 2382/2-76), т.е. функцией алгебры логики, а ее аргументы определены на множестве $$\{0,1\}$$. Алгебра логики устанавливает основные законы формирования и преобразования логических функций. Она позволяет представить любую сложную функцию в виде композиции простейших функций. Рассмотрим наиболее часто употребляемые из них.

    (рис 14.1) Входные и выходные сигналы в схемах компьютера

    Известно, что количество всевозможных функций $$N$$ от $$n$$ аргументов выражается зависимостью:

    $$N=2^{2^n}$$

    При $$n = 0$$ можно определить две основные функции ($$N = 2$$), не зависящие от каких-либо переменных: $$y_0$$, тождественно равную нулю ($$y_0 \equiv 0$$), и $$y_1$$, тождественно равную единице ($$y_1 \equiv 1$$). Технической интерпретацией функции $$y_1 \equiv 1$$ может быть генератор импульсов. При отсутствии входных сигналов на выходе этого устройства всегда имеются импульсы (единицы). Функция $$y_0 \equiv 0$$ может быть интерпретирована как отключенная схема, сигналы от которой не поступают ни к каким устройствам.

    При $$n=1$$ зависимость (14.3) дает $$N=4$$. Представим зависимость значений этих функций от значения аргумента $$x$$ в виде специальной таблицы истинности (табл. 14.4).

    Таблица функций от одной переменной
    $$X$$ $$Y_j$$ $$Y0$$ $$Y1$$ $$Y2$$ $$Y3$$
    0 0 1 0 0
    1 0 1 1 0

    Таблицы истинности получили такое название, потому что они определяют значение функции в зависимости от комбинации входных сиг-налов. В этой таблице, как и ранее, $$y_0 \equiv 0$$ и $$y_1 \equiv 1$$. Функция $$y_2 = x$$, а функция $$y_3 =\bar x$$ (инверсия $$x$$).

    Этим функциям соответствуют определенные технические аналоги. Схема, реализующая зависимость $$y_2 =x$$, называется повторителем, а схема $$y_3 = \bar x$$ - инвертором.

    При $$n = 2, N = 16$$, т.е. от двух переменных можно построить шестнадцать различных функций. В табл. 14.5 представлена часть из них, имеющая фундаментальное значение при построении основных схем ЭВМ.

    Таблица функций от двух переменных
    $$Y_jX1$$ $$Y0$$ $$Y1$$ $$Y2$$ $$Y3$$ $$\dots$$ $$Y4$$ $$Y5$$ $$Y6$$ $$Y7$$ $$Y8$$ $$Y9$$ $$\dots$$ $$Y15$$
    $$X2$$
    00 0 1 0 1 0 1 0 1 1 0
    01 0 1 0 1 1 0 0 1 0 1
    10 0 1 1 0 1 0 0 1 0 1
    11 0 1 1 0 1 0 1 0 1 0

    В левой части таблицы перечислены все возможные комбинации входных переменных (наборы значений), а в правой - возможные реак-ции выходных сигналов. В табл. 14.5 представлены функции $$y_0 - y_3$$, полностью соответствующие функциям табл. 14.4, а также новые, часто используемые и интересные функции $$y_4 - y_9$$. При этом местоположение функций и их нумерация в таблице особого значения не имеют. По данной таблице нетрудно составить аналитическое выражение (зависимость) для каждой функции от двух аргументов вида (14.2). Для этого наборы переменных, на которых функция принимает значение единицы, записываются как конъюнкции (логическое умножение) и связываются знаками логического сложения. Такие формы функций получили название дизъюнктивных нормальных форм (ДНФ). Если в этих функциях конъюнкции содержат все без исключения переменные в прямом или инверсном значениях, то такая форма функций называется совершенной.

    Функция $$y_4$$ представляет собой функцию логического сложения, дизъюнкцию. Она принимает значение единицы, если значение единицы имеет хотя бы одна переменная $$х_1$$ или $$х_1$$:

    $$у_4=x_1 \bar x_2 /vee \bar x_1 x_2 \vee x_1x_2=x_1 \vee x_2$$

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

    Функция $$y_5$$ является инверсной функцией по отношению к $$y_4$$:

    $$y_5=\bar y_4=\overline{x_1 \vee x_2}=\bar x_1*\bar x_2$$

    Она имеет название отрицание дизъюнкции. Иногда в литературе встречается ее специальное название "стрелка Пирса", по имени математика, исследовавшего ее свойства.

    Функция $$y_6$$ является функцией логического умножения, конъюнкцией. Она очень похожа на операцию обычного умножения и принимает значение единицы в тех случаях, когда все ее переменные равны единице:

    $$y_6=x_1*x_2$$

    Функция $$y_7$$ является инверсной функцией по отношению $$y_6$$:

    $$y_7=\bar y_6=\overline{x_1*x_2}=\bar x_1\vee \bar x_2$$

    Она называется отрицание конъюнкции или "штрих Шеффера".

    Функция $$y_8$$ называется логической равнозначностью, она принимает значение единицы, если все ее переменные имеют одинаковое значение (или 0 или 1):

    $$y_4=\bar x_1*\bar x_2 \vee x_1*x_2$$

    Функция $$y_9$$ является инверсной по отношению $$y_8$$ и называется не-равнозначностью:

    $$y_9=\bar y_8=\overline{\bar x_1*\bar x_2 \vee x_1*x_2}=\bar x_1*x_2 \vee x_1* \bar x_2$$

    Она принимает значение единицы, если ее переменные имеют противоположные значения. Функции $$y_8$$ и $$y_9$$ являются основой для построения сумматоров, так как они соответствуют правилам формирования цифр двоичных чисел при сложении и вычитании (табл. 14.2).

    Из перечисленных функций двух переменных можно строить сколь угодно сложные зависимости, отражающие алгоритмы преобразования информации, которая представлена в двоичной системе счисления. Алгебра логики устанавливает правила формирования логически полного базиса простейших функций, из которых могут строиться любые более сложные. Наиболее привычным базисом является набор трех функций {инверсия - $$\lceil$$, дизъюнкция - $$\vee$$, конъюнкция - $$\wedge$$ или }. Работа с функциями, представленными в этом базисе, очень похожа на использование операций обычной алгебры.

    Алгебра логики устанавливает, что существуют и другие комбинации простейших логических функций, обладающих свойством логической полноты. Например, наборы логических функций {инверсия, дизъюнкция} и {инверсия, конъюнкция} также являются логически полными. Наиболее интересны минимальные базисы, включающие по одной операции {"отрицание дизъюнкции ($$\bar {\vee}$$)", {"отрицание конъюнкции ($$\bar {\wedge}$$)"}или (). Однако работа с функциями, представленными в указанных базисах, требует от специалистов по проектированию ЭВМ определенных навыков.

    Законы алгебры логики

    Из определения вышеприведенных функций можно установить целый ряд простейших свойств:

    $$x \vee 1=1\;\; x*0=0\\ x \vee \bar x=1\; \; x*1=x\;\; x \vee x \vee \dots \vee x=x\\ x \vee 0=x \;\; x* \bar x=0\;\; x*x*\dots*x=x\\ x \vee x=x \;\; x*x=x$$

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

  • коммутативный (переместительный)

    $$x_1*x_2=x_2*x_1 \;\; x_1 \vee x_2=x_2 \vee x_1$$
  • ассоциативный (сочетательный)

    $$(x_1*x_2)*x_3=(x_1*x_3)*x_2=x_1*(x_2*x_3) \;\; (x_1 \vee x_2) \vee x_3=x_1 \vee (x_2 \vee x_3)$$
  • Эти законы полностью идентичны законам обычной алгебры;

  • дистрибутивный (распределительный)

    $$x_1*(x_2 \vee x_3)=x_1*x_2 \vee x_1*x_3\\ X_1 \vee x_2*x_3=(x_1 \vee x_2)(x_1 \vee x_3);$$
  • закон поглощения. В дизъюнктивной форме ЛФ конъюнкция меньшего ранга, т.е. с меньшим числом переменных, поглощает все конъюнкции большего ранга, если ее изображение содержится в них. Это же справедливо и для конъюнктивных форм:

    $$x_1 \vee x_1*x_2=x_1 \;\; x_1*(x_1 \vee x_2)=x_1;$$
  • закон склеивания

    $$x_1x_2 \vee x_1 \bar x_2=x_1 \;\; (x_1 \vee x_2)(x_1 \vee \bar x_2)=x_1,\\ Fx \vee F \bar x =F \;\; (x \vee F)(\bar x \vee F)=F$$

    где $$F$$ - логическая функция общего вида, не зависящая от переменной $$x$$;

  • закон свертки

    $$x \vee \bar x F=x \vee F \;\; x(\bar x \vee F)=xF;$$
  • правило де Моргана

    $$\overline{x_1 \vee x_2}= \bar x_1* \bar x_1* \bar x_2 \;\; \overline{x_*x_2}=\bar x_1* \bar x_2$$
  • Убедиться в тождественности приведенных зависимостей можно путем аналитических преобразований выражений, находящихся в левой и правой частях, или путем построения таблицы истинности для ЛФ.

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

    Техническая интерпретация логических функций

    По логическим выражениям проектируются схемы ЭВМ. При этом следует придерживаться следующей последовательности действий.

  • Словесное описание работы схемы.
  • Формализация словесного описания.
  • Запись функций в дизъюнктивной (конъюнктивной) совершенной нормальной форме по таблицам истинности.
  • Минимизация логических зависимостей с целью их упрощения.
  • Представление полученных выражений в выбранном логически полном базисе элементарных функций.
  • Построение схемы устройства.
  • Проверка работоспособности полученной схемы.
  • Покажем взаимосвязь перечисленных этапов на примере.

    Пример 14.13. Спроектировать схему, фиксирующую появление "неправильной" тетрады в двоично-десятичном представлении чисел.

  • Каждая тетрада двоично-десятичного представления числа содержит десятичные цифры 0-9, что соответствует двоичным числам 0000-1001. Значения тетрады, соответствующие двоичным числам 1010-1111 (шестнадцатеричные цифры A-F), не должны появляться при представлении десятичных чисел.
  • Составим таблицу истинности функции (рис.14.2), которая принимает значения, равные единице, при появлении "неправильных" тетрад. Разряды тетрады обозначим переменными $$x, y, z, u$$.

    (рис 14.2) Таблица истинности функции F
  • Исходная совершенная дизъюнктивная нормальная форма записывается как

    $$F=x \bar yz \bar u \vee x \bar yzu \vee xy \bar {zu} \vee xy \bar zu \vee xyz \bar u \vee xyzu$$
  • Эта форма функции допускает упрощение, если использовать законы алгебры логики.
  • Минимальная форма функции $$F$$ в логически полном базисе $$\{, \vee, \lceil\}$$ будет иметь вид:

    $$F= xy \vee xz = x(y \vee z)$$

    Для представления этой же схемы в другом полном базисе, например, $$\{\bar {}\}$$, воспользуемся правилом де Моргана:

    $$F = xy \vee xz =\overline{\overline xy \vee xz}} = \overline{\overline{xy}*\overline{xz}}$$
  • По полученным зависимостям можно построить схемы фиксации "неправильных" тетрад (рис.14.3).
  • Проверить работоспособность построенных схем можно путем задания различных комбинаций переменных $$x, y , z, u$$ и определения реакции на выходе схемы $$F$$.

    (рис 14.3) Схема фиксации неправильных тетрад
  • Кодирование информации в компьютере

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

    Информация может быть по своей физической природе числовой, текстовой, графической, звуковой, видео и др. Она также может быть постоянной (не меняющейся), переменной, случайной, вероятностной. Наибольший интерес представляет переменная информация, так как она позволяет выявлять причинно-следственные связи в процессах и явлениях. Существуют различные способы оценки количества информации. Классическим является подход, использующий формулу К. Шеннона. Эта формула учитывает возможную неодинаковую вероятность состояний (сообщений) в наборе

    $$I=-\sum_{i=1}^{n}p_i**log_2p_i$$

    где $$I$$- количество информации;

    $$p_i$$ - вероятность того, что именно i-е состояние (сообщение) выделено в наборе из $$n$$ состояний. Применительно к равновероятным исходам она имеет вид (формула Р. Хартли):

    $$I = log_2 N,$$

    где $$I$$- количество информации, несущей представление о состоянии, в котором находится объект;

    $$N$$- количество равновероятных альтернативных состояний объекта.

    Любая информация, обрабатываемая в компьютере, должна быть представлена двоичными цифрами {0,1}, т.е. должна быть закодирована комбинацией этих цифр. Код - это набор условных обозначений для представления информации, а процесс представления информации с использованием элементов кода называется кодированием. Различные виды информации (числа, тексты, графика, звук) имеют свои правила кодирования. Коды отдельных значений, относящиеся к различным видам информации, могут совпадать. Поэтому расшифровка кодированных данных осуществляется по контексту при выполнении команд программы. Ранее были показаны особенности представления и кодирования числовых данных. Рассмотрим особенности представления в компьютерах других видов информации.

    Кодирование нечисловой информации

    До последнего времени практически все системы связи России, системы передачи аудио- и видеоинформации, включая центральное радио и телевидение, строились на принципах передачи аналоговой информации. Это подразумевало выполнение процедур модуляции (преобразования данных в высокочастотные сигналы при передаче) и демодуляции для обратного преобразования и воспроизведения принятых данных.

    С развитием микроэлектроники и компьютерных технологий все большее распространение получают цифровые системы передачи дан-ных. В их основу положены процедуры квантования аналоговой информации по времени и величине. Значения функции $$y = f(t)$$ измеряются с большой точностью в моменты времени $$0, \Delta t, 2 \Delta t, \dots, n \Delta t (\Delta t = const)$$. Эта последовательность дискретных измерений пересылается абоненту, у которого по ним воссоздается значение функции. Качество воспроизведения функции $$y = f(t)$$ при $$\Delta t \to 0$$ может быть очень высоким.

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

    Видеоинформация может быть как статической, так и динамической. Статическая видеоинформация включает текст, рисунки, графики, чертежи, таблицы и др. Рисунки делятся также на плоские - двумерные, и объемные - трехмерные.

    Динамическая видеоинформация - это видео-, мульт- и слайдфильмы. В их основе лежит последовательное экспонирование на экране в реальном масштабе времени отдельных кадров в соответствии со сценарием.

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

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

    При демонстрации слайдфильмов каждый кадр экспонируется на экране столько времени, сколько необходимо для восприятия его человеком (обычно от 30 с. до 1 мин.). Слайдфильмы можно отнести к статической видеоинформации.

    По способу формирования видеоизображения бывают растровые, матричные и векторные.

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

    Матричные изображения получили в ЭВМ наиболее широкое распространение. Изображение на экране рисуется электронным лучом в виде точек.

    Информация представляется в виде характеристик значений каждой точки - пиксела (picture element), рассматриваемой как наименьшая структурная единица изображения. Количество высвечиваемых одновременно пикселов на экране дисплея определяется его разрешающей способностью. В качестве характеристик графической информации выступают: координаты точки (пиксела) на экране, цвет пиксела, цвет фона (градация яркости). Вся эта информация хранится в видеопамяти дисплея. При выводе графической информации на печать изображение также воспроизводится по точкам.

    Изображение может быть и в векторной форме. Тогда оно составляется из отрезков линий (в простейшем случае - прямых), для которых задаются: начальные координаты, угол наклона и длина отрезка (может указываться и код используемой линии). Векторный способ имеет ряд преимуществ перед матричным: изображение легко масштабируется с сохранением формы, является "прозрачным", может быть наложено на любой фон и т.д.

    Интенсивное развитие информационных технологий предполагает объединение самых различных систем (компьютерных, сетевых, систем связи, информационных и т.п.) для решения задач формирования, хранения, обработки и преобразования данных. Способы представления информации в отдельных согласованно работающих устройствах, кодирование и преобразование в них кодов зависят от типов данных, принятых стандартов, принципов действия отдельных устройств.

    Кодирование текстовой информации

    При формировании любого текстового (символьного) документа характерно последовательное использование нескольких видов кодировок и их преобразований. Например, при вводе информации с клавиатуры каждое нажатие клавиши, на которой изображен требуемый символ, вызывает появление так называемого scan -кода, который представляет собой двоичное число, равное порядковому номеру клавиши.

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

    Бурное развитие сетевых технологий, в частности, Интернета, привело к интеграции многих технических, программных и информацион-ных систем с большим количеством стандартов, использующих совершенно разные коды, а соответственно, и разные таблицы кодировок.

    Только для русских текстов широко применялись кодировки: KOI-7 и KOI-8r, ASCII, ANSI, Win1251, ISO-8859, кодировка ГОСТ - альтернативная (СР866) и др.

    Стандарты КОИ-7 (код обмена информацией, 7-ми битовый) и KOI-8r (восьмибитовый) используются, в основном, в почтовых сообщениях, в E-mail. Они были широко распространены и продолжают применяться на постсоветском пространстве.

    До недавнего времени, когда удельный вес приложений MS DOS был определяющим, наиболее часто использовался стандарт ASCII (American Standard Code for Information Interchange) - американский стандартный код передачи информации.

    Появление операционной среды Windows с графическим интерфейсом потребовало изменения стандарта и введения другой кодовой таблицы - таблицы ANSI (American National Standard Institute - Американский институт национальных стандартов). Графический интерфейс Windows реализует векторный принцип отображения данных на экране дисплея, что позволяет использовать масштабируемые шрифты True Type. По сравнению с таблицей ASCII в ANSI изменилось размещение символов и отсутствуют символы псевдографики, так как в графическом интерфейсе они не нужны. С учетом успехов фирмы Microsoft в продажах на российском рынке своего программного обеспечения, фирмой была разработана русская кодовая страница CP-1251 (Windows-1251), получившая широкое признание и ставшая стандартом de facto.

    Кодировка ISO-8859 (кодировка фирмы Sun), хотя и принята в качестве стандарта ГОСТа, но практически в стандартных приложениях не применяется.

    Обилие кодовых страниц привело к трудностям адекватного воспроизведения текстовой информации, разработке различных программ-перекодировщиков. Сообщество фирм Unicode предложило новую систему кодирования, основанную на 16-разрядном кодировании символов. В двухбайтовом представлении отпадает необходимость в использовании отдельных кодовых таблиц и их перекодировок. Таблица Unicode позволяет дать уникальный номер любому символу всех национальных алфавитов ($$2^{16}=65536$$ символов). Для компенсации возрастающих объемов памяти под программные продукты, представленные в Unicode, при хранении и пересылках файлов применяются процедуры "сжатия" (архивации) данных. Этот стандарт приобретает все большую популярность.

    Кодирование графических данных

    Методы кодирования графики и цвета во многом определяются способами передачи цвета и его оттенков (полутонов). Для формирования цвета отдельных пикселов применяется его декомпозиция на составляющие цвета. Имеется несколько подобных систем:

  • основная система RGB (Red, Green, Blue) - использует разложение цвета и смешение трех цветов (красного, зеленого и синего) в различных пропорциях;
  • дополнительная (альтернативная) система CMY (Cyan, Magenta, Yellow) - смешение бирюзового, фиолетового и желтого цветов;
  • полиграфическая CMYK, использующая добавление к предыдущей системе четвертого цвета - черного (blaK).
  • Если для передачи оттенков (полутонов) каждого из основных цветов задействовать один байт (28=256 градаций), то появится возможность формировать $$2^8*2^8*2^8=2^{24}$$ различных цветов, более $$16,77*10^6$$ цветов для первых двух систем и более $$4*10^9$$ для полиграфической системы. Такой режим представления графики называется полноцветным - $$True Color$$.

    Статические кадры с графикой служат основой для создания анимационных систем. В современных высококачественных мониторах и в телевизорах с цифровым управлением электронно-лучевой трубкой цветные кадры с графикой сменяются 70 и более раз в секунду, что позволяет высококачественно передавать движение объектов.

    Высокое качество передачи графических образов и видеоинформации сопряжено с повышенным потреблением ресурсов памяти. Поэтому разработан ряд стандартов, создающих файлы в форматах *.bmp, *.jpg, *.png и др. Различие всех этих стандартов и файлов заключается в качестве (точности) передачи образов и объемах создаваемых файлов.

    Кодирование звуковой информации

    Кодирование аудиоинформации - процесс более сложный. Изначально аудиоинформация является аналоговой. Для преобразования ее в цифровую форму используют аппаратные средства - аналого-цифровые преобразователи (АЦП), в результате работы которых аналоговый сигнал оцифровывается, т.е. представляется в виде числовой последовательности. Для вывода оцифрованного звука на аудиоустройства необходимо проводить обратное преобразование, которое осуществляется с помощью цифро-аналоговых преобразователей (ЦАП).

    Одним из самых популярных стандартов для передачи и воспроизведения звука был и остается MP3, обеспечивающий компактность MP3-файлов, высокое качество звука и простоту применения. Однако держатели патентов корпорация Thomson и Frauenhofer Institut ввели новый платный порядок использования стандарта, что немедленно вызвало разработку альтернативных бесплатных стандартов.

    Контрольные вопросы

  • Что понимается под системой счисления?
  • Сформулируйте правила перевода целых и дробных чисел из одной системы счисления в другую.
  • Как переводятся числа в системах счисления с основаниями, кратными степени 2?
  • Как выполняются операции над двоично-кодированными десятичными числами? В чем сущность проведения коррекций результата?
  • Приведите примеры выполнения логических операций над двоичными кодами.
  • Какова связь логических выражений со схемами компьютера?
  • В чем заключается различие между представлениями чисел в формах с фиксированной и плавающей точкой (запятой)?
  • Каким образом представляется в компьютерах текстовая и графическая информация?
  • Чем отличается растровая и векторная графики?
  • Как осуществляется передача цвета в графике?
  • Страницы:

    Системы счисления

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

    Различают позиционные и непозиционные системы счисления. В позиционных системах каждая цифра числа имеет определенный вес, который зависит от позиции цифры в последовательности, изображающей число. Позиция цифры называется разрядом. В позиционной системе счисления любое число можно представить в виде:

    $$A_n=a_{m-1}a_{m-2} \dots a_i \dots a_0*a_{-1}a_{-2}\dots a_{-k}=a_{m-1}*N^{m-1}+a_{m-2}*N^{m-2}\dots+a_{-k}*N^{-k}$$ $$A_N=\sum_{i=-k}^{m-1}a_i*N^i$$

    где $$a_i$$ - $$i$$-я цифра числа;

    $$k$$ - количество цифр в дробной части числа;

    $$m$$ - количество цифр в целой части числа;

    $$N$$ - основание системы счисления.

    Основание системы счисления $$N$$ показывает, во сколько раз "вес" $$i$$-го разряда больше ($$i-1$$) разряда. Целая часть числа отделяется от дробной части точкой (запятой).

    Пример 14.1. $$A_{10}=37.25$$.

    В соответствии с формулой (14.1) это число формируется из цифр с весами разрядов:

    $$A_{10}=3-10^1+7-10^0+2-10^{-1} + 5-10^{-2}$$

    Теоретически наиболее экономичной системой счисления для представления значения числа цифрами является система с основанием $$е =2,71828\dots$$, находящимся между числами 2 и 3.

    Во всех современных ЭВМ для представления числовой информации применяется двоичная система счисления. Это обусловлено:

  • более простой реализацией алгоритмов выполнения арифметических и логических операций;
  • более надежной физической реализацией основных функций, так как они имеют всего два состояния (0 и 1);
  • экономичностью аппаратной реализации всех схем ЭВМ.
  • При $$N=2$$ число различных цифр, используемых для записи чисел, ограничено множеством из двух цифр (нуль и единица). Кроме двоичной системы счисления, широкое распространение получили и производные системы:

  • двоичная - $$\{0,1\}$$;
  • десятичная, точнее двоично-десятичное представление десятичных чисел - $$\{0, 1, \dots, 9\}$$;
  • шестнадцатеричная - $$\{0, 1, 2, \dots 9, A, B, C, D, E, F\}$$. Здесь шестнадцатеричная цифра $$A$$ обозначает число 10, $$B$$ - число 11, ..., $$F$$ - число 15;
  • восьмеричная (от слова восьмерик) - $$\{0, 1, 2, 3, 4, 5, 6, 7\}$$. Она широко используется во многих специализированных ЭВМ.
  • Восьмеричная и шестнадцатеричная системы счисления являются производными от двоичной, так как $$16=2^4$$ и $$8=2^3$$. Они применяются в основном для более компактного изображения двоичной информации, так как запись значения чисел производится существенно меньшим числом знаков

    Пример 14.2. Число $$A_{10}=100.625$$ в двоичной, восьмеричной и шестнадцатеричной системах счисления имеют следующее представление:

    $$А_2 =1100100.101;\\ A_8=144.5;\\ А_{16} = 64.А;\\ A_2=1*2^6+1*2^5+0*2^4+0*2^3+1*2^2+0*2^1+0*2^0+1*2^{-1}+0*2^{-2}+1*2^{-3};\\ A_8 =1*8^2+4*8^1+4*8^0+5*8^{-1};\\ A_{16} =6*16'+4*16^0+10*16^{-1}.$$

    В табл. 14.1 приведено сравнительное представление чисел в различных системах счисления: десятичной (10 с/с), двоичной (2 с/с), восьмеричной (8 с/с) и шестнадцатеричной (16 с/с).

    По данным этой таблицы можно выявить целый ряд закономерностей:

  • нуль и единица имеют единственное и одинаковое представление в любых системах счисления;
  • основание системы счисления в любой системе имеет представление 10;
  • незначащие нули слева от целой части и справа от дробной части числа не изменяют значений чисел;

    Представление чисел в различных системах счисления
    10c/c 2c/c 8c/c 16c/c 10c/c 2c/c 8c/c 16c/c
    Целые числа Целые числа
    0 00000 0 0 10 01010 12 A
    1 00001 1 1 11 01011 13 B
    2 00010 2 2 12 01100 14 C
    3 00011 3 3 13 -1101 15 D
    4 00100 4 4 14 01110 16 E
    5 00101 5 5 15 01111 17 F
    6 00110 6 6 16 10000 20 10
    7 00111 7 7 17 10001 21 11
    8 01000 10 8 18 10010 22 12
    9 01001 11 9 и.т.д.
    Дробные числа Дробные числа
    0.5 0.1 0.4 0.8 0.0625 0.0001 0.04 0.1
    0.25 0.01 0.2 0.4 0.03125 0.00001 0.02 0.08
    0.125 0.001 0.1 0.2 и т.д.
  • представление чисел в различных системах счисления допускает однозначное их преобразование из одной системы в другую.
  • В ЭВМ перевод из одной системы в другую осуществляется автоматически, по специальным программам. Правила перевода целых и дробных чисел отличаются.

    Необходимо сделать несколько замечаний. В общем случае перевод любого числа с дробью из одной системы счисления в другую может привести к появлению иррациональных чисел, имеющих бесконечное количество разрядов в дробной части чисел. Естественно, что любое техническое устройство, например компьютер, может оперировать только с конечным числом цифр, являющихся старшими, наиболее значимыми разрядами.

    Игнорирование, отбрасывание младших разрядов чисел приводит к их округлению. При этом разница между округляемым и полученным числами называется ошибкой округления. Следует учитывать, что округление результатов вычислений по любому неслучайному правилу приводит к ошибкам с ненулевым смещением [83].

    Перевод целых чисел

    Целое число с основанием $$N1$$ переводится в систему счисления с основанием $$N2$$ путем последовательного деления числа $$A_{Ni}$$ на основание $$N2$$, записанного в виде числа с основанием $$N1$$, до получения остатка. Полученное частное следует вновь делить на основание $$N2$$, и этот процесс надо повторять до тех пор, пока частное не станет меньше делителя.

    Полученные остатки от деления и последнее частное записываются в порядке, обратном полученному при делении. Сформированное число и будет являться числом с основанием $$N2$$.

    Пример 14.3. $$A_{10}=37, A_2=?, A_{16}=?$$

    Перевод дробных чисел

    Дробное число с основанием $$N1$$ переводится в систему счисления с основанием $$N2$$ путем последовательного умножения <<Eqn010.eps>> на основание $$N2$$, записанное в виде числа с основанием $$N1$$. При каждом умножении целая часть произведения берется в виде очередной цифры соответствующего разряда, а оставшаяся дробная часть принимается за новое множимое. Число умножений определяет разрядность полученного результата, представляющего число $$A_{Ni}$$ в системе счисления $$N2$$.

    Пример 14.4. $$A_{10}=0.625; A_2=?; A_8=?; A_{16}=?$$

    Так как двоичная, восьмеричная и шестнадцатеричная системы связаны через степени числа 2, то преобразования между ними можно вы-полнять другим, более простым способом. Для перевода из шестнадцатеричной (восьмеричной) системы счисления в двоичную достаточно двоичным кодом записать шестнадцатеричные коды цифр тетрадами (по 4 двоичных разряда) и триадами (по 3 двоичных разряда) - для восьмеричных цифр. Обратный перевод из двоичного кода производится в обратном порядке: двоичное число разбивается влево и вправо от границы целой и дробной частей на тетрады - для последующей записи цифр в шестнадцатеричном представлении, на триады - для записи их значений восьмеричными цифрами.

    Арифметические основы ЭВМ

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

    В компьютерах используются три вида чисел: с фиксированной точкой (запятой), с плавающей точкой (запятой) и двоично-десятичное представление. Точка (запятая) - это подразумеваемая граница целой и дробной частей числа, разряды $$k$$ и$$т$$ формулы (4.1).

    Все современные компьютеры имеют центральный процессор или центральное процессорное устройство - CPU (Central Processing Unit), предназначенное для обработки чисел с фиксированной точкой. Одной из важнейших его характеристик является разрядность $$п$$ - количество двоичных разрядов, представляющих значение числа. Основным достоинством CPU служит простота алгоритмов выполнения операций и, соответственно, высокая скорость операций.

    У чисел с фиксированной точкой в двоичном формате предполагается строго определенное место точки (запятой). Обычно это место определяется или перед первой цифрой числа, или после последней цифры числа. Если точка фиксируется перед первой значащей цифрой, то это означает, что число по модулю меньше единицы. Диапазон изменения значений чисел определяется неравенством:

    $$2^{-n} \le |A_2| \le 1-26{-n}$$

    Если точка фиксируется после последней цифры, то это означает, что $$n$$-разрядные двоичные числа являются целыми. Диапазон изменения их значений составляет:

    $$- \le |A_2| \le 2^n-1$$

    Перед самым старшим из возможных цифровых разрядов двоичного числа фиксируется его знак. Положительные числа имеют нулевое значение знакового разряда, отрицательные - единичные. Каждая цифра двоичного числа $$\{0,1\}$$ занимает один бит соответствующего $$n$$-разрядного формата.

    Существенным недостатком представления чисел с фиксированной точкой служит тот факт, что аппроксимация малых чисел связана с большой относительной ошибкой. Для чисел же, приближающихся по величине к максимально возможным ($$2n$$), относительная ошибка уменьшается. Абсолютная же ошибка представления чисел с фиксированной точкой всегда лежит в одних и тех же пределах независимо от величины чисел.

    Другой формой представления чисел является представление их в виде чисел с плавающей точкой (запятой). Представление чисел с плавающей точкой необходимо использовать, когда обрабатываемые числа имеют очень большой диапазон изменения. Эта ситуация типична для научно-технических расчетов (тригонометрические, экспоненты, логарифмы). Поэтому все современные микропроцессоры в качестве дополнения к CPU имеют математические сопроцессоры. Их обычно называют блоками или устройствами с плавающей точкой - FPU (Floating Point Unit), или числовым расширением процессора - NPX (Numeric Processor eXtension). Сочетание параллельно работающих CPU и FPU позволяет добиться большей скорости и большей точности вычислений.

    Числа с плавающей точкой представляются в виде мантиссы $$m_a$$ и порядка $$p_a$$, иногда это представление называют полулогарифмической формой числа. Например, число $$A_{10}=373$$ можно представить в виде $$0.373 . 10^3$$, при этом $$m_a = 0.373, p_a,=3$$, основание системы счисления подразумевается фиксированным и равным десяти. Для двоичных чисел $$A2$$ в этом представлении также формируется $$m_a$$ и порядок $$p_a$$ при основании системы счисления, равном двум.

    $$А_2=\pm р_а; \pm т_а$$

    что соответствует записи

    $$A_2=2^{\pm p_a}*(\pm m_a)$$

    Детализация двоичного представления чисел с плавающей точкой и двоично-десятичная форма чисел подробно освещены в [88]. Поскольку их представление и обработка базируются на двоичной арифметике, рассмотрим правила сложения двоичных цифр.

    Все современные ЭВМ имеют достаточно развитую систему команд, включающую десятки и сотни машинных операций. Однако выполнение любой операции основано на использовании простейших микроопераций типа сложения и сдвига. Это позволяет иметь единое арифметико-логическое устройство для выполнения любых операций, связанных с обработкой информации. Сложение двоичных цифр двух чисел $$A$$ и $$B$$ иллюстрируется табл. 14.2.

    Правила сложения двоичных цифр
    Значения двоичных чисел А и В Разряд суммы Перенос в следующий разряд
    $$a_i$$ $$b_i$$ $$p_{i-1}$$ $$S_i$$ $$P_i$$
    0 0 0 0 0
    0 0 1 1 0
    0 1 0 1 0
    0 1 1 0 1
    1 0 0 1 0
    1 0 1 0 1
    1 1 0 0 1
    1 1 1 1 1

    Здесь показаны правила сложения двоичных цифр $$a_i$$, $$b_i$$ одноименных разрядов с учетом возможных переносов из предыдущего разряда $$p_{i-1}$$.

    Подобные таблицы можно было бы построить для любой другой арифметической и логической операции (вычитание, умножение и т.д.), но именно данные этой таблицы положены в основу выполнения любой операции ЭВМ. Под знак чисел отводится специальный знаковый разряд. Знак "+" кодируется двоичным нулем, а знак "-" - единицей. Действия над прямыми кодами двоичных чисел при выполнении операций создают большие трудности, связанные с необходимостью учета значений знаковых разрядов:

  • во-первых, следует отдельно обрабатывать значащие разряды чисел и разряды знака;
  • во-вторых, значение разряда знака влияет на алгоритм выполнения операции, например, сложение может заменяться вычитанием и наоборот.
  • Во всех ЭВМ без исключения все операции выполняются над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и цифровые разряды, а также заменять операцию вычитания операцией сложения.

    Различают прямой код (П), обратный код (ОК) и дополнительный код (ДК) двоичных чисел.

    Машинные коды

    Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (нуль или единица) перед его старшим числовым разрядом.

    Пример 14.5.

    $$A_{10} = +10\; A_2 = +1010\; [А_2]_п=0 \vdots 1010; \\ B_{10}=-15\; B_2=-1111 \; [B_2]_n=1 \vdots 1111$$

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

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

    Пример 14.6.

    $$А_{10} = +5\; А_2=+101\; [А_2]_n=[А_2]_{ОК} = 0 \vdots 101; \\ В_{10}=-13\; В_2=-1101\; [B_2]_{0K}=1 \vdots 0010.$$

    Свое название обратный код чисел получил потому, что коды цифр отрицательного числа заменены инверсными. Укажем наиболее важные свойства обратного кода чисел:

  • сложение положительного числа $$С$$ с его отрицательным значением в обратном коде дает так называемую машинную единицу $$МЕ_{ок}=1\vdots 111\dots 11$$, состоящую из единиц в знаковом и значащих разрядах числа;
  • нуль в обратном коде имеет двоякое значение. Он может быть положительным числом - $$0 \vdots 00\dots 0$$ и отрицательным числом - $$1 \vdots 11\dots 11$$. Значение отрицательного нуля совпадает с $$МЕ_{ок}$$. Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
  • Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда ($$2^0$$- для целых чисел, $$2^{-k}$$ - для дробных).

    Пример 14.7.

    $$А_{10} =+19\; A_2=+10011\; [A_2]_n=[A_2]_{OK}=[A_2]_{ДК}=0 \vdots 10011;\\ B_{10}=-13\; B_2=-11-1\; [B_2]_{ДК}=[B_2]_{OK}+2^0=1 \vdots 0010+1=1 \vdots 0011$$

    Укажем основные свойства дополнительного кода.

  • Сложение дополнительных кодов положительного числа $$С$$ с его отрицательным значением дает так называемую машинную единицу дополнительного кода:

    $$МЕ_{дк}=МЕ_{ок}+20=10 \vdots 00\dots 00,$$

    т. е. число 10 (два) в знаковых разрядах числа.

  • Дополнительный код получил такое свое название потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы $$МЕ_{ДК}$$.
  • Нуль в дополнительном коде имеет единственное представление. Благодаря этому все современные компьютеры используют при хранении и преобразовании чисел именно двоичный код.
  • Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак "+" в этих кодах кодируется двумя нулевыми знаковыми разрядами, а "-" - двумя единичными разрядами.

    Пример 14.8.

    $$А_{10} = 9;\; A_2=+1001;\; [A_2]_n=[A_2]_{ок}=[A_2]_{ДK}= 0 \vdots 1001;\\ \[[A_2\]]_{мок}=[A_2]_{мдк}=00 \vdots 1001;\\ В_{10}=- 9;\; В_2 =-1001;\; [В_2]_{ок}= 1 \vdots 0110 \; [B_2]_{ДК}=1\vdots 0111;\\ \[[B_2\]]_{мок}=11 \vdots 0110; [B_2]_{МДК}=11 \vdots 0111.$$

    Целью введения модифицированных кодов является фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов "01" свидетельствует о положительном переполнении разрядной сетки, а "10" - об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ, в том числе во всех ПК, роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.

    Арифметические операции над числами с фиксированной точкой

    Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный (ОК) или дополнительный (ДК) код. Пусть числа $$А \ge 0$$ и $$В \ge 0$$, тогда операция алгебраического сложения выполняется в соответствии с табл. 14.3.

    Таблица преобразования кодов при алгебраическом сложении
    Требуемая операция Необходимое преобразование
    $$A+B$$ $$A+B$$
    $$A-B$$ $$A+(-B)$$
    $$-A+B$$ $$ (-A)+B$$
    $$-A-B$$ $$ (-A)+(-B)$$

    Зависимости, представленные в правой части таблицы, указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с табл. 14.2. При выполнении сложения цифр необходимо соблюдать следующие правила.

  • Слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа.
  • Знаковые разряды чисел участвуют в сложении так же, как и цифровые.
  • Необходимые преобразования кодов (п. 14.2) производятся с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.
  • При образовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом. При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
  • Пример 14.9. Сложить два числа $$A_{10}= 7; B_{10}= 16$$.

    $$A_2 = +111 = +0111; \\ B_2 = + 1000 = + 10000.$$

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

    $$[A_2]_п =[A_2]_{ок}= [A_2]_{ДК}=0 \vdots 00111;\\ \[[B_2\]]_п=[B_2]_{ок}=[B_2]_{ДК}=0 \vdots 10000.$$

    Сложение в обратном или дополнительном кодах дает один и тот же результат:

    $$\frac{\begin{matrix}0\;\vdots\;00111\\+0\;\vdots\; 10000 \end{matrix}}{C_2=0 \;\vdots\; 10111_2}\\C_{10}=+23$$

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

    Пример 14.10. Сложить два числа $$A_{10}= +16;\;B_{10}=-7$$ в ОК и ДК. В соответствии с табл. 14.3 должна быть реализована зависимость $$A+(-B)$$, в которой второй член преобразуется с учетом знака

    $$[A_2]_п=0\; \vdots \; 10000=0 \; \vdots \;10000;\;[A_2]_{oк}=0 \vdots \; 10000;\; [A_2]={ДК}=0 \; \vdots \; 10000\\ \[[B_2\]] _п=1\;\vdots111=1\;\vdots\;00111;\; [B_2]_{ок}=1\;\vdots \;11000;\;[B_2]_{ДК}=1\;\vdots\;11001$$

    При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (см. п. 4. правил). В случае ДК этот перенос игнорируется.

    Умножение. Умножение двоичных чисел наиболее просто реализуется в прямом коде. Рассмотрим, каким образом оно приводится к операциям сложения и сдвигам.

    Пример 14.11. Умножить два числа $$A_{10}=7;\; B_{10}=5$$. Перемножим эти числа, представленные прямыми двоичными кодами, так же, как это делается в десятичной системе.

    Нетрудно видеть, что произведение получается путем сложения частных произведений, которые представляют собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведения, полученные умножением на нуль, игнорируются. Важной особенностью операции умножения n-разрядных сомножителей является увеличение разрядности произведения до $$n+n=2n$$. Знак произведения формируется путем сложения знаковых разрядов сомножителей. Возможные переносы из знакового разряда игнорируются.

    Деление. Операция деления, как и в десятичной арифметике, является обратной операции умножения. Покажем, что и эта операция приводится к последовательности операций сложения и сдвига.

    Пример 14.12. Разделить два числа $$A_{10}=45;\; B_{10}=5$$.

    $$[А_2]_п= 101101\\ \[[B_2\]]_п=101$$

    Деление произведено так же, как это делается обычно в десятичной системе. Сначала проверяется, можно ли вычесть значение делителя из старших разрядов делимого. Если возможно, то в разряде частного записывается единица и определяется частная разница. В противном случае в частное записывается нуль, и разряды делителя сдвигаются вправо на один разряд по отношению к разрядам делимого. К полученной предыдущей разнице сносится очередная цифра делимого, и данный процесс повторяется, пока не будет получена необходимая точность. Если учесть, что все вычитания в ЭВМ заменяются сложением в ОК или в ДК (см. табл. 14.3), то действительно, операция деления приводится к операциям сложения и сдвигам вправо разрядов делителя относительно разрядов делимого. Отметим, что делимое перед операцией деления должно быть приведено к $$2n$$-разрядной сетке. Только в этом случае при делении на $$n$$-разрядный делитель получается $$n$$-разрядное частное.

    Знак частного формируется также путем сложения знаковых разрядов делимого и делителя, как это делалось при умножении.

    Логические основы ЭВМ

    Основные сведения из алгебры логики

    Теоретической основой построения ЭВМ служат специальные математические дисциплины. Одной из них является алгебра логики, или булева алгебра (Дж. Буль - английский математик XIX в., основоположник этой дисциплины). Ее аппарат широко используют для описания схем ЭВМ, их проектирования и оптимизации.

    Вся информация в ЭВМ представляется в двоичной системе счисления. Поставим в соответствие входным сигналам отдельных устройств ЭВМ соответствующие значения $$x_j(i=\overline{1,n})$$ , а выходным сигналам - значения функций $$y_j(j=\overline{1,m}$$) (рис.14.1).

    В этом случае зависимостями

    $$y_J=f{x_l,x_2,\dots,x_i,\dots,x_n),$$

    где $$x_i$$ -$$ i$$- й вход;

    $$n$$ - число входов;

    $$y_j$$ -$$j$$-й выход;

    $$т$$ - число выходов в устройстве, можно описывать алгоритм работы любого устройства ЭВМ. Каждая такая зависимость $$у_j$$ является "булевой функцией, у которой число возможных состояний и каждой ее независимой переменной равно двум" (стандарт ISO 2382/2-76), т.е. функцией алгебры логики, а ее аргументы определены на множестве $$\{0,1\}$$. Алгебра логики устанавливает основные законы формирования и преобразования логических функций. Она позволяет представить любую сложную функцию в виде композиции простейших функций. Рассмотрим наиболее часто употребляемые из них.

    (рис 14.1) Входные и выходные сигналы в схемах компьютера

    Известно, что количество всевозможных функций $$N$$ от $$n$$ аргументов выражается зависимостью:

    $$N=2^{2^n}$$

    При $$n = 0$$ можно определить две основные функции ($$N = 2$$), не зависящие от каких-либо переменных: $$y_0$$, тождественно равную нулю ($$y_0 \equiv 0$$), и $$y_1$$, тождественно равную единице ($$y_1 \equiv 1$$). Технической интерпретацией функции $$y_1 \equiv 1$$ может быть генератор импульсов. При отсутствии входных сигналов на выходе этого устройства всегда имеются импульсы (единицы). Функция $$y_0 \equiv 0$$ может быть интерпретирована как отключенная схема, сигналы от которой не поступают ни к каким устройствам.

    При $$n=1$$ зависимость (14.3) дает $$N=4$$. Представим зависимость значений этих функций от значения аргумента $$x$$ в виде специальной таблицы истинности (табл. 14.4).

    Таблица функций от одной переменной
    $$X$$ $$Y_j$$ $$Y0$$ $$Y1$$ $$Y2$$ $$Y3$$
    0 0 1 0 0
    1 0 1 1 0

    Таблицы истинности получили такое название, потому что они определяют значение функции в зависимости от комбинации входных сиг-налов. В этой таблице, как и ранее, $$y_0 \equiv 0$$ и $$y_1 \equiv 1$$. Функция $$y_2 = x$$, а функция $$y_3 =\bar x$$ (инверсия $$x$$).

    Этим функциям соответствуют определенные технические аналоги. Схема, реализующая зависимость $$y_2 =x$$, называется повторителем, а схема $$y_3 = \bar x$$ - инвертором.

    При $$n = 2, N = 16$$, т.е. от двух переменных можно построить шестнадцать различных функций. В табл. 14.5 представлена часть из них, имеющая фундаментальное значение при построении основных схем ЭВМ.

    Таблица функций от двух переменных
    $$Y_jX1$$ $$Y0$$ $$Y1$$ $$Y2$$ $$Y3$$ $$\dots$$ $$Y4$$ $$Y5$$ $$Y6$$ $$Y7$$ $$Y8$$ $$Y9$$ $$\dots$$ $$Y15$$
    $$X2$$
    00 0 1 0 1 0 1 0 1 1 0
    01 0 1 0 1 1 0 0 1 0 1
    10 0 1 1 0 1 0 0 1 0 1
    11 0 1 1 0 1 0 1 0 1 0

    В левой части таблицы перечислены все возможные комбинации входных переменных (наборы значений), а в правой - возможные реак-ции выходных сигналов. В табл. 14.5 представлены функции $$y_0 - y_3$$, полностью соответствующие функциям табл. 14.4, а также новые, часто используемые и интересные функции $$y_4 - y_9$$. При этом местоположение функций и их нумерация в таблице особого значения не имеют. По данной таблице нетрудно составить аналитическое выражение (зависимость) для каждой функции от двух аргументов вида (14.2). Для этого наборы переменных, на которых функция принимает значение единицы, записываются как конъюнкции (логическое умножение) и связываются знаками логического сложения. Такие формы функций получили название дизъюнктивных нормальных форм (ДНФ). Если в этих функциях конъюнкции содержат все без исключения переменные в прямом или инверсном значениях, то такая форма функций называется совершенной.

    Функция $$y_4$$ представляет собой функцию логического сложения, дизъюнкцию. Она принимает значение единицы, если значение единицы имеет хотя бы одна переменная $$х_1$$ или $$х_1$$:

    $$у_4=x_1 \bar x_2 /vee \bar x_1 x_2 \vee x_1x_2=x_1 \vee x_2$$

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

    Функция $$y_5$$ является инверсной функцией по отношению к $$y_4$$:

    $$y_5=\bar y_4=\overline{x_1 \vee x_2}=\bar x_1*\bar x_2$$

    Она имеет название отрицание дизъюнкции. Иногда в литературе встречается ее специальное название "стрелка Пирса", по имени математика, исследовавшего ее свойства.

    Функция $$y_6$$ является функцией логического умножения, конъюнкцией. Она очень похожа на операцию обычного умножения и принимает значение единицы в тех случаях, когда все ее переменные равны единице:

    $$y_6=x_1*x_2$$

    Функция $$y_7$$ является инверсной функцией по отношению $$y_6$$:

    $$y_7=\bar y_6=\overline{x_1*x_2}=\bar x_1\vee \bar x_2$$

    Она называется отрицание конъюнкции или "штрих Шеффера".

    Функция $$y_8$$ называется логической равнозначностью, она принимает значение единицы, если все ее переменные имеют одинаковое значение (или 0 или 1):

    $$y_4=\bar x_1*\bar x_2 \vee x_1*x_2$$

    Функция $$y_9$$ является инверсной по отношению $$y_8$$ и называется не-равнозначностью:

    $$y_9=\bar y_8=\overline{\bar x_1*\bar x_2 \vee x_1*x_2}=\bar x_1*x_2 \vee x_1* \bar x_2$$

    Она принимает значение единицы, если ее переменные имеют противоположные значения. Функции $$y_8$$ и $$y_9$$ являются основой для построения сумматоров, так как они соответствуют правилам формирования цифр двоичных чисел при сложении и вычитании (табл. 14.2).

    Из перечисленных функций двух переменных можно строить сколь угодно сложные зависимости, отражающие алгоритмы преобразования информации, которая представлена в двоичной системе счисления. Алгебра логики устанавливает правила формирования логически полного базиса простейших функций, из которых могут строиться любые более сложные. Наиболее привычным базисом является набор трех функций {инверсия - $$\lceil$$, дизъюнкция - $$\vee$$, конъюнкция - $$\wedge$$ или }. Работа с функциями, представленными в этом базисе, очень похожа на использование операций обычной алгебры.

    Алгебра логики устанавливает, что существуют и другие комбинации простейших логических функций, обладающих свойством логической полноты. Например, наборы логических функций {инверсия, дизъюнкция} и {инверсия, конъюнкция} также являются логически полными. Наиболее интересны минимальные базисы, включающие по одной операции {"отрицание дизъюнкции ($$\bar {\vee}$$)", {"отрицание конъюнкции ($$\bar {\wedge}$$)"}или (). Однако работа с функциями, представленными в указанных базисах, требует от специалистов по проектированию ЭВМ определенных навыков.

    Законы алгебры логики

    Из определения вышеприведенных функций можно установить целый ряд простейших свойств:

    $$x \vee 1=1\;\; x*0=0\\ x \vee \bar x=1\; \; x*1=x\;\; x \vee x \vee \dots \vee x=x\\ x \vee 0=x \;\; x* \bar x=0\;\; x*x*\dots*x=x\\ x \vee x=x \;\; x*x=x$$

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

  • коммутативный (переместительный)

    $$x_1*x_2=x_2*x_1 \;\; x_1 \vee x_2=x_2 \vee x_1$$
  • ассоциативный (сочетательный)

    $$(x_1*x_2)*x_3=(x_1*x_3)*x_2=x_1*(x_2*x_3) \;\; (x_1 \vee x_2) \vee x_3=x_1 \vee (x_2 \vee x_3)$$
  • Эти законы полностью идентичны законам обычной алгебры;

  • дистрибутивный (распределительный)

    $$x_1*(x_2 \vee x_3)=x_1*x_2 \vee x_1*x_3\\ X_1 \vee x_2*x_3=(x_1 \vee x_2)(x_1 \vee x_3);$$
  • закон поглощения. В дизъюнктивной форме ЛФ конъюнкция меньшего ранга, т.е. с меньшим числом переменных, поглощает все конъюнкции большего ранга, если ее изображение содержится в них. Это же справедливо и для конъюнктивных форм:

    $$x_1 \vee x_1*x_2=x_1 \;\; x_1*(x_1 \vee x_2)=x_1;$$
  • закон склеивания

    $$x_1x_2 \vee x_1 \bar x_2=x_1 \;\; (x_1 \vee x_2)(x_1 \vee \bar x_2)=x_1,\\ Fx \vee F \bar x =F \;\; (x \vee F)(\bar x \vee F)=F$$

    где $$F$$ - логическая функция общего вида, не зависящая от переменной $$x$$;

  • закон свертки

    $$x \vee \bar x F=x \vee F \;\; x(\bar x \vee F)=xF;$$
  • правило де Моргана

    $$\overline{x_1 \vee x_2}= \bar x_1* \bar x_1* \bar x_2 \;\; \overline{x_*x_2}=\bar x_1* \bar x_2$$
  • Убедиться в тождественности приведенных зависимостей можно путем аналитических преобразований выражений, находящихся в левой и правой частях, или путем построения таблицы истинности для ЛФ.

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

    Техническая интерпретация логических функций

    По логическим выражениям проектируются схемы ЭВМ. При этом следует придерживаться следующей последовательности действий.

  • Словесное описание работы схемы.
  • Формализация словесного описания.
  • Запись функций в дизъюнктивной (конъюнктивной) совершенной нормальной форме по таблицам истинности.
  • Минимизация логических зависимостей с целью их упрощения.
  • Представление полученных выражений в выбранном логически полном базисе элементарных функций.
  • Построение схемы устройства.
  • Проверка работоспособности полученной схемы.
  • Покажем взаимосвязь перечисленных этапов на примере.

    Пример 14.13. Спроектировать схему, фиксирующую появление "неправильной" тетрады в двоично-десятичном представлении чисел.

  • Каждая тетрада двоично-десятичного представления числа содержит десятичные цифры 0-9, что соответствует двоичным числам 0000-1001. Значения тетрады, соответствующие двоичным числам 1010-1111 (шестнадцатеричные цифры A-F), не должны появляться при представлении десятичных чисел.
  • Составим таблицу истинности функции (рис.14.2), которая принимает значения, равные единице, при появлении "неправильных" тетрад. Разряды тетрады обозначим переменными $$x, y, z, u$$.

    (рис 14.2) Таблица истинности функции F
  • Исходная совершенная дизъюнктивная нормальная форма записывается как

    $$F=x \bar yz \bar u \vee x \bar yzu \vee xy \bar {zu} \vee xy \bar zu \vee xyz \bar u \vee xyzu$$
  • Эта форма функции допускает упрощение, если использовать законы алгебры логики.
  • Минимальная форма функции $$F$$ в логически полном базисе $$\{, \vee, \lceil\}$$ будет иметь вид:

    $$F= xy \vee xz = x(y \vee z)$$

    Для представления этой же схемы в другом полном базисе, например, $$\{\bar {}\}$$, воспользуемся правилом де Моргана:

    $$F = xy \vee xz =\overline{\overline xy \vee xz}} = \overline{\overline{xy}*\overline{xz}}$$
  • По полученным зависимостям можно построить схемы фиксации "неправильных" тетрад (рис.14.3).
  • Проверить работоспособность построенных схем можно путем задания различных комбинаций переменных $$x, y , z, u$$ и определения реакции на выходе схемы $$F$$.

    (рис 14.3) Схема фиксации неправильных тетрад
  • Кодирование информации в компьютере

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

    Информация может быть по своей физической природе числовой, текстовой, графической, звуковой, видео и др. Она также может быть постоянной (не меняющейся), переменной, случайной, вероятностной. Наибольший интерес представляет переменная информация, так как она позволяет выявлять причинно-следственные связи в процессах и явлениях. Существуют различные способы оценки количества информации. Классическим является подход, использующий формулу К. Шеннона. Эта формула учитывает возможную неодинаковую вероятность состояний (сообщений) в наборе

    $$I=-\sum_{i=1}^{n}p_i**log_2p_i$$

    где $$I$$- количество информации;

    $$p_i$$ - вероятность того, что именно i-е состояние (сообщение) выделено в наборе из $$n$$ состояний. Применительно к равновероятным исходам она имеет вид (формула Р. Хартли):

    $$I = log_2 N,$$

    где $$I$$- количество информации, несущей представление о состоянии, в котором находится объект;

    $$N$$- количество равновероятных альтернативных состояний объекта.

    Любая информация, обрабатываемая в компьютере, должна быть представлена двоичными цифрами {0,1}, т.е. должна быть закодирована комбинацией этих цифр. Код - это набор условных обозначений для представления информации, а процесс представления информации с использованием элементов кода называется кодированием. Различные виды информации (числа, тексты, графика, звук) имеют свои правила кодирования. Коды отдельных значений, относящиеся к различным видам информации, могут совпадать. Поэтому расшифровка кодированных данных осуществляется по контексту при выполнении команд программы. Ранее были показаны особенности представления и кодирования числовых данных. Рассмотрим особенности представления в компьютерах других видов информации.

    Кодирование нечисловой информации

    До последнего времени практически все системы связи России, системы передачи аудио- и видеоинформации, включая центральное радио и телевидение, строились на принципах передачи аналоговой информации. Это подразумевало выполнение процедур модуляции (преобразования данных в высокочастотные сигналы при передаче) и демодуляции для обратного преобразования и воспроизведения принятых данных.

    С развитием микроэлектроники и компьютерных технологий все большее распространение получают цифровые системы передачи дан-ных. В их основу положены процедуры квантования аналоговой информации по времени и величине. Значения функции $$y = f(t)$$ измеряются с большой точностью в моменты времени $$0, \Delta t, 2 \Delta t, \dots, n \Delta t (\Delta t = const)$$. Эта последовательность дискретных измерений пересылается абоненту, у которого по ним воссоздается значение функции. Качество воспроизведения функции $$y = f(t)$$ при $$\Delta t \to 0$$ может быть очень высоким.

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

    Видеоинформация может быть как статической, так и динамической. Статическая видеоинформация включает текст, рисунки, графики, чертежи, таблицы и др. Рисунки делятся также на плоские - двумерные, и объемные - трехмерные.

    Динамическая видеоинформация - это видео-, мульт- и слайдфильмы. В их основе лежит последовательное экспонирование на экране в реальном масштабе времени отдельных кадров в соответствии со сценарием.

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

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

    При демонстрации слайдфильмов каждый кадр экспонируется на экране столько времени, сколько необходимо для восприятия его человеком (обычно от 30 с. до 1 мин.). Слайдфильмы можно отнести к статической видеоинформации.

    По способу формирования видеоизображения бывают растровые, матричные и векторные.

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

    Матричные изображения получили в ЭВМ наиболее широкое распространение. Изображение на экране рисуется электронным лучом в виде точек.

    Информация представляется в виде характеристик значений каждой точки - пиксела (picture element), рассматриваемой как наименьшая структурная единица изображения. Количество высвечиваемых одновременно пикселов на экране дисплея определяется его разрешающей способностью. В качестве характеристик графической информации выступают: координаты точки (пиксела) на экране, цвет пиксела, цвет фона (градация яркости). Вся эта информация хранится в видеопамяти дисплея. При выводе графической информации на печать изображение также воспроизводится по точкам.

    Изображение может быть и в векторной форме. Тогда оно составляется из отрезков линий (в простейшем случае - прямых), для которых задаются: начальные координаты, угол наклона и длина отрезка (может указываться и код используемой линии). Векторный способ имеет ряд преимуществ перед матричным: изображение легко масштабируется с сохранением формы, является "прозрачным", может быть наложено на любой фон и т.д.

    Интенсивное развитие информационных технологий предполагает объединение самых различных систем (компьютерных, сетевых, систем связи, информационных и т.п.) для решения задач формирования, хранения, обработки и преобразования данных. Способы представления информации в отдельных согласованно работающих устройствах, кодирование и преобразование в них кодов зависят от типов данных, принятых стандартов, принципов действия отдельных устройств.

    Кодирование текстовой информации

    При формировании любого текстового (символьного) документа характерно последовательное использование нескольких видов кодировок и их преобразований. Например, при вводе информации с клавиатуры каждое нажатие клавиши, на которой изображен требуемый символ, вызывает появление так называемого scan -кода, который представляет собой двоичное число, равное порядковому номеру клавиши.

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

    Бурное развитие сетевых технологий, в частности, Интернета, привело к интеграции многих технических, программных и информацион-ных систем с большим количеством стандартов, использующих совершенно разные коды, а соответственно, и разные таблицы кодировок.

    Только для русских текстов широко применялись кодировки: KOI-7 и KOI-8r, ASCII, ANSI, Win1251, ISO-8859, кодировка ГОСТ - альтернативная (СР866) и др.

    Стандарты КОИ-7 (код обмена информацией, 7-ми битовый) и KOI-8r (восьмибитовый) используются, в основном, в почтовых сообщениях, в E-mail. Они были широко распространены и продолжают применяться на постсоветском пространстве.

    До недавнего времени, когда удельный вес приложений MS DOS был определяющим, наиболее часто использовался стандарт ASCII (American Standard Code for Information Interchange) - американский стандартный код передачи информации.

    Появление операционной среды Windows с графическим интерфейсом потребовало изменения стандарта и введения другой кодовой таблицы - таблицы ANSI (American National Standard Institute - Американский институт национальных стандартов). Графический интерфейс Windows реализует векторный принцип отображения данных на экране дисплея, что позволяет использовать масштабируемые шрифты True Type. По сравнению с таблицей ASCII в ANSI изменилось размещение символов и отсутствуют символы псевдографики, так как в графическом интерфейсе они не нужны. С учетом успехов фирмы Microsoft в продажах на российском рынке своего программного обеспечения, фирмой была разработана русская кодовая страница CP-1251 (Windows-1251), получившая широкое признание и ставшая стандартом de facto.

    Кодировка ISO-8859 (кодировка фирмы Sun), хотя и принята в качестве стандарта ГОСТа, но практически в стандартных приложениях не применяется.

    Обилие кодовых страниц привело к трудностям адекватного воспроизведения текстовой информации, разработке различных программ-перекодировщиков. Сообщество фирм Unicode предложило новую систему кодирования, основанную на 16-разрядном кодировании символов. В двухбайтовом представлении отпадает необходимость в использовании отдельных кодовых таблиц и их перекодировок. Таблица Unicode позволяет дать уникальный номер любому символу всех национальных алфавитов ($$2^{16}=65536$$ символов). Для компенсации возрастающих объемов памяти под программные продукты, представленные в Unicode, при хранении и пересылках файлов применяются процедуры "сжатия" (архивации) данных. Этот стандарт приобретает все большую популярность.

    Кодирование графических данных

    Методы кодирования графики и цвета во многом определяются способами передачи цвета и его оттенков (полутонов). Для формирования цвета отдельных пикселов применяется его декомпозиция на составляющие цвета. Имеется несколько подобных систем:

  • основная система RGB (Red, Green, Blue) - использует разложение цвета и смешение трех цветов (красного, зеленого и синего) в различных пропорциях;
  • дополнительная (альтернативная) система CMY (Cyan, Magenta, Yellow) - смешение бирюзового, фиолетового и желтого цветов;
  • полиграфическая CMYK, использующая добавление к предыдущей системе четвертого цвета - черного (blaK).
  • Если для передачи оттенков (полутонов) каждого из основных цветов задействовать один байт (28=256 градаций), то появится возможность формировать $$2^8*2^8*2^8=2^{24}$$ различных цветов, более $$16,77*10^6$$ цветов для первых двух систем и более $$4*10^9$$ для полиграфической системы. Такой режим представления графики называется полноцветным - $$True Color$$.

    Статические кадры с графикой служат основой для создания анимационных систем. В современных высококачественных мониторах и в телевизорах с цифровым управлением электронно-лучевой трубкой цветные кадры с графикой сменяются 70 и более раз в секунду, что позволяет высококачественно передавать движение объектов.

    Высокое качество передачи графических образов и видеоинформации сопряжено с повышенным потреблением ресурсов памяти. Поэтому разработан ряд стандартов, создающих файлы в форматах *.bmp, *.jpg, *.png и др. Различие всех этих стандартов и файлов заключается в качестве (точности) передачи образов и объемах создаваемых файлов.

    Кодирование звуковой информации

    Кодирование аудиоинформации - процесс более сложный. Изначально аудиоинформация является аналоговой. Для преобразования ее в цифровую форму используют аппаратные средства - аналого-цифровые преобразователи (АЦП), в результате работы которых аналоговый сигнал оцифровывается, т.е. представляется в виде числовой последовательности. Для вывода оцифрованного звука на аудиоустройства необходимо проводить обратное преобразование, которое осуществляется с помощью цифро-аналоговых преобразователей (ЦАП).

    Одним из самых популярных стандартов для передачи и воспроизведения звука был и остается MP3, обеспечивающий компактность MP3-файлов, высокое качество звука и простоту применения. Однако держатели патентов корпорация Thomson и Frauenhofer Institut ввели новый платный порядок использования стандарта, что немедленно вызвало разработку альтернативных бесплатных стандартов.

    Контрольные вопросы

  • Что понимается под системой счисления?
  • Сформулируйте правила перевода целых и дробных чисел из одной системы счисления в другую.
  • Как переводятся числа в системах счисления с основаниями, кратными степени 2?
  • Как выполняются операции над двоично-кодированными десятичными числами? В чем сущность проведения коррекций результата?
  • Приведите примеры выполнения логических операций над двоичными кодами.
  • Какова связь логических выражений со схемами компьютера?
  • В чем заключается различие между представлениями чисел в формах с фиксированной и плавающей точкой (запятой)?
  • Каким образом представляется в компьютерах текстовая и графическая информация?
  • Чем отличается растровая и векторная графики?
  • Как осуществляется передача цвета в графике?
  • Вернуться к учебному плану