В "Энциклопедии кибернетики" термин "вычислительная машина" определяется так: "Вычислительная машина – физическая система (устройство или комплекс устройств), предназначенная для механизации и автоматизации процесса алгоритмической обработки информации и вычислений".
Информация определяет многие процессы, происходящие в вычислительной машине. Таким образом, вычислительная машина, в общем случае, получает информацию, запоминает ее, обрабатывает по заданной программе и направляет потребителю (пользователю) или передает в другие системы обработки.
Термин "информация" в широком смысле – это отражение реального мира, а в узком смысле – это любые сведения, являющиеся объектом хранения, передачи и преобразования. С практической же точки зрения информация всегда подается в виде представления о событиях, явлениях природы, о состоянии технологических производственных процессов. Сообщение от источника к приемнику посредством канала передачи поступает в материально-энергетической форме (электрический, световой, звуковой сигнал и т. п.). В этом смысле информационное сообщение можно представить функцией X (t), характеризующей изменение во времени материально-энергетических параметров физической среды, в которой осуществляются информационные процессы.
Рисунок 1.1 – Преобразование непрерывной функции
Цифровые ЭВМ используют дискретные сообщения. При этом переход от непрерывного представления сигнала к дискретному дает значительные преимущества при передаче, хранении и обработке информации. Для этих целей широко используются аналого-цифровые преобразователи, осуществляющие квантование сигнала по уровню и по времени. В первом случае значения уровня сигнала заменяются набором дискретных значений с точностью ΔX (рис. 1.1), во втором – непрерывный сигнал заменяется последовательностью импульсов длительностью τ0, следующих через интервалы времени Δt,
где Fm – максимальная составляющая частоты в спектре непрерывного сигнала.
Совокупность всех выборок образует дискретный или цифровой сигнал. В цифровой технике такой процесс называется кодированием, а совокупность полученных чисел – кодом сигнала. Для записи чисел цифровыми знаками используются позиционные системы счисления.
Понятие о системах счисления. В общем случае система счисления представляет собой совокупность приемов и правил для записи чисел цифровыми знаками (символами). При этом применяемая в практике система счисления должна обеспечивать: запись любого числа в требуемом диапазоне величин; однозначное представление совокупности символов в соответствии с числом; простоту оперирования цифровыми знаками.
Все системы представления чисел делят на непозиционные и позиционные. В первом случае количественный эквивалент цифры не зависит от места ее расположения в записи числа. Так, в римской системе счисления, если цифра, имеющая меньший количественный эквивалент, располагается справа от цифры с большим количественным эквивалентом, то их количественные эквиваленты складываются, если слева то вычитаются.
Например, запись XV соответствует числу 15 (X – десять, V – пять), а запись IX – числу девять.
Непозиционные системы счисления характеризуются очень сложными и громоздкими алгоритмами представления чисел и выполнения арифметических действий и потому в цифровой вычислительной технике применения не нашли.
Во втором случае одна и та же цифра принимает различные числовые значения в зависимости от местоположения (разряда) этой цифры в записи числа. Например, в десятичной системе счисления в записи 737 цифра 7 встречается дважды, однако ее количественный эквивалент в обоих разрядах различен: правая цифра 7 обозначает число единиц – семь, а левая – семьсот.
Любая позиционная система счисления характеризуется основанием. Основание (базис) – число знаков или символов, используемых для представления цифр в данной системе. Возможно бесчисленное множество позиционных систем, так как за основание можно принять любое число, образовав новую систему. В вычислительной технике, например, широко используются шестнадцатеричная система счисления, запись чисел которой производится с помощью цифр и символов (букв) :0, 1,..., 9, A, B, C, D, E, F.
Для позиционной системы счисления справедливо равенство
(1.1)
где N – произвольное число, записанное в системе счисления с основанием q;
a – цифры системы счисления;
n, m – число целых и дробных разрядов.
Так, например, сокращенной записи числа 737.25 соответствует его значение, вычисленное согласно равенству (1. 1):
737.25 =7 · 102 + 3 · 101 + 7 · 100 + 2 · 10-1 + 5 · 10-1.
В двоичной системе счисления для представления чисел используются две цифры: 0 и 1. Действуя согласно с (1.1), значение двоичного числа, например, 11110010. 0110 можно представить в следующем виде:
11110010.0110 = 1·27 + 1·26 + 1·25 + 1·24 + 0·23 + 0·22 + 1·21 + 0·20 + 0·2-1 + 1·2-2 + 1·2-3 + 0·2-4.
Очевидно, десятичный эквивалент этого двоичного числа (по правилам десятичной арифметики) будет равен 241. 375.
В табл. 1.1 приведены эквиваленты десятичных цифр в некоторых системах счисления.
Таблица 1.1 – Эквиваленты десятичных цифр
Десятичная цифра | Эквиваленты в системах счисления | Десятичная цифра | Эквиваленты в системах счисления | ||||
q = 2 | q = 8 | q = 16 | q = 2 | q = 8 | Q = 16 | ||
0 | 0 | 0 | 0 | 8 | 1000 | 10 | 8 |
1 | 1 | 1 | 1 | 9 | 1001 | 11 | 9 |
2 | 10 | 2 | 2 | 10 | 1010 | 12 | A |
3 | 11 | 3 | 3 | 11 | 1011 | 13 | B |
4 | 100 | 4 | 4 | 12 | 1100 | 14 | C |
5 | 101 | 5 | 5 | 13 | 1101 | 15 | D |
6 | 110 | 6 | 6 | 14 | 1110 | 16 | E |
7 | 111 | 7 | 7 | 15 | 1111 | 17 | F |
Для записи одного и того же значения в различных системах счисления требуется разное число позиций или разрядов. Чем меньше основание системы, тем больше длина числа (длина разрядной сетки). Если длина разрядной сетки задана, то это ограничивает максимальное по абсолютному значению число, которое можно записать.
Пусть длина разрядной сетки равна любому положительному числу, например, числу К. Тогда
N(q) max = qk - 1. (1.2)
Если же задано максимальное абсолютное значение числа, то длина разрядной сетки
K = log q (N(q)max = 1). (1. 3)
Обычно длина обрабатываемых чисел в ЦВМ ограничена значениями: 1 байт (8 разрядов), 2 байта (16 разрядов), а также 4 и 8 байт.
Преобразования чисел с различными основаниями. Для перевода целых чисел или целых частей неправильных дробей из системы счисления с основанием q1 в новую систему счисления с основанием q2 используется метод, базирующийся на делении переводимого числа на основание новой системы счисления. В соответствии с (1.1) целое число N(q1) в системе с основанием q2 записывается в виде:
N(q2) = bn-1 q2n-1 + bn-2 q2n-2 + …+ b1 q21 + b0 q20. (1. 4)
Представляя (1.4) по схеме Горнера, получим:
N(q2) =(…((( bn-1 q2 + bn-2 )q2 + bn-3) q2…+ b1) q2 + b0 ). (1. 5)
Запись числа N(q2) в виде (1.5) раскрывает сущность используемого метода. Действительно, если разделить правую часть (1.5) на величину основания q2, то получим целую часть (…( bn-1 q2 + bn-2 )q2 +… b1) и остаток b0. Разделив целую часть на q2, найдем второй остаток b1.
Повторяя процесс деления n раз, находим последнее частное bn-1, которое в соответствии с (1.5) является старшей цифрой n разрядного числа, представленного в системе с основанием q1. Перевод чисел арифметическими действиями должен производиться по правилу системы счисления с основанием q1.
Пример 1.1 Перевести десятичное число N=134 в двоичную систему счисления (q2 =2)
Ход решения приведен в табл. 1. 2.
Таблица 1. 2 – Перевод десятичного числа
Шаги | Операция деления | Частное | Остаток (цифра) | Разряд | Примечание |
1 | 134:2 | 67 | 0 | b0 | Младший разряд |
2 | 67:2 | 33 | 1 | b1 | |
3 | 33:2 | 16 | 1 | b2 | |
4 | 16:2 | 8 | 0 | b3 | |
5 | 8:2 | 4 | 0 | b4 | |
6 | 4:2 | 2 | 0 | b5 | |
7 | 2:2 | 1 | 0 | b6 | |
8 | 1:2 | 0 | 1 | b7 | Старший разряд |
Ответ: N =b7 b6 b5 b4 b3 b2 b1 b0 = 100001101.
При переводе правильных дробей из системы счисления с основанием q1 в систему счисления с основанием q2 используется метод, базирующийся на умножении переводимой правильной дроби на основание q2 новой системы счисления. Правильную дробь N(q1) в системе с основанием q2 можно представить следующим выражением:
N(q2) = b-1 q2-1 + b-2 q2-2 + …+ b -m q2 -m. (1.6)
По схеме Горнера (1.6) можно представить в виде:
N(q2) = q2-1 (b-1 + q2-1 (b-2 + …+ q2-1(b -(m-1) +q2 -1b -m)…)). (1.7)
Если правую часть выражения (1.7) умножить на q2, то можно найти неправильную дробь, в целой части которой будет число b-1. Оставшуюся дробную часть следует далее умножить вновь на q1. В полученной дроби целая часть представит собой b-2 и т.д. Таким образом, m – кратное умножение позволяет найти все m цифр дробной части числа в новой системе счисления. Все действия выполняются по правилам q1-арифметики. В результате описанных операций в целой части получающихся дробей будут получены эквиваленты цифр в новой системе счисления.
Пример 1.2. Привести десятичную дробь N =0.34375 в двоичную систему счисления (q=2).
Операции перевода приведены в табл. 1.3.
Таблица 1.3 – Перевод дробного числа
Шаги | Операция умножения | Произведение | Целая часть (цифра) | Разряд | Примечание |
1 | 2*0.34375 | 0.6875 | 0 | b-1 | Старший разряд |
2 | 2*0.6875 | 1.375 | 1 | b-2 | |
3 | 2*0.375 | 0.75 | 0 | b-3 | |
4 | 2*0.75 | 1.5 | 1 | b-4 | |
5 | 2*0.5 | 1.0 | 1 | b-5 | Младший разряд |
Ответ: N(2) =0. b-1 b-2 b-3 b-4 b-5 =0. 01011.
Переводя правильные дроби из одной системы счисления в другую, можно получить дробь в виде бесконечного или расходящегося ряда. В этом случае рекомендуется процесс перевода заканчивать, если появится дробная часть, имеющая во всех разделах нули, или будет достигнута заданная точность перевода (получено требуемое число разрядов результата).
Естественно, что при этом возникает погрешность перевода чисел. В ЭВМ точность перевода обычно ограничивается длиной разрядной сетки, отведенной для представления чисел.
Для удобства преобразования двоичных чисел в десятичные приведем значения веса некоторых разрядов (позиций) двоичной системы счисления в пределах b15 ... b-6 (см. табл. 1.4).
Таблица 1.4 – Веса разрядов двоичного числа
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 |
32768 | 16384 | 8192 | 4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32 |
24 | 23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 | 2-5 | 2-6 |
16 | 8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | 0.03125 | 0.015625 |
Пример 1.3 Перевести двоичное число N(2) =1101. 0101 в десятичное
Как и ранее, ход решения отобразим с помощью табл. 1. 5.
Таблица 1.5 – Перевод дробного числа
Шаги | Двоичное число (код) | Вес двоичного разряда | Промежуточные значения | |||||||
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |||
1 | 2-4 | 0,0625 | 1*0,0625=0,0625 | |||||||
2 | 2-3 | 0,125 | 0*0,125=0 | |||||||
3 | 2-2 | 0,25 | 1*0,25=0,25 | |||||||
4 | 2-1 | 0,5 | 0*0,5=0 | |||||||
5 | 20 | 1,0 | 1*1,0=1,0 | |||||||
6 | 21 | 2,0 | 0*2,0=0 | |||||||
7 | 22 | 4,0 | 1*4,0=4,0 | |||||||
8 | 23 | 8,0 | 1*8,0=8,0 | |||||||
Σ(10)=13. 3125 |
Ответ: десятичный эквивалент равен сумме промежуточных значений N10=13. 3125.
В информатике и вычислительной технике разработано множество других методов перевода чисел из одной системы счисления в другую, позволяющих получить результат с меньшими затратами времени на преобразования.
Шестнадцатеричные числа. Шестнадцатеричная система счисления (Н-код происходит от hexadecimal), система с основанием 16 использует символы от 0 до F. Такая форма числа удобна для записи, запоминания и ввода с клавиатуры. Компактность достигается путем разделения бит двоичного числа на тетрады (4 бит) и тогда число комбинаций составит 2 =16.
Пример 1.4 Представить двоичное число N2 =110010111010 шестнадцатеричным N16 или NH, где Н указывает на принадлежность системы счисления к шестнадцатеричной.
Решение: надо начать с младшего бита (МБ) и разделить двоичное число на группы из четырех бит. Затем эти группы заменить эквивалентной шестнадцатеричной цифрой. Первая группа 1010=А, вторая - 1011=В, третья - 100=С, следовательно, результат:
1010 1011 1100 =СВА16 или в Н-коде СВАН.
Поскольку обратные преобразования в рассмотренном примере не встречают затруднения, то рассмотрим преобразования чисел из D-кода (десятичного) в Н-код и обратно.
Пример 1.5 Преобразовать десятичное дробное число в Н-код.
Решение представим в двух частях: отдельно для целой части и для дробной.
В первом случае воспользуемся методикой, заложенной в табл. 1.2, проделаем для N =634. 328125 следующие несложные процедуры (рис. 1.2).
мл. разряд
Шаг 1. 634 : 16 = 39, остаток 1010 = А16
Шаг 1. 39 : 16 = 2, остаток 710 = 716
ст. разряд
Шаг 3. 2 : 16, остаток 210 = 216
63410 = 2 7 А16
Рисунок 1.2 – Десятично-шестнадцатеричное преобразование целой части числа
Для преобразования дробной части воспользуемся схемой операций, приведенных в табл. 1.3. А именно, поэтапно (рис. 1.3):
Шаг 1. 16 · 0. 328125 = 5.25 целая часть "5" ст. разряд
Шаг 1. 16 · 0. 25 = 4. 0 целая часть "4" мл. разряд
0,328125 = 0. 5 4
Рисунок 1.3 – Десятично-шестнадцатеричный перевод дробной части числа
Пример 1.6 Обратное преобразование шестнадцатеричного числа в десятичное: N16 =5CBA. 27.
Целая часть числа в табл.1.6 получила свой десятичный эквивалент в виде N10 =23738.
Таблица 1.6 – Преобразование шестнадцатеричного числа в десятичное
Степень позиции | 163 | 162 | 161 | 160 | Результат | |||
Значение позиции | 4096 | 256 | 16 | 1 | ||||
Н-код | 5 | С | В | А | ||||
4096 | 256 | 16 | 1 | |||||
* | * | * | * | |||||
5 | 12 | 11 | 10 | |||||
D-код | 20480 | + | 3072 | + | 176 | + | 10 | = 23 73816 |
Несколько упростив запись по сравнению с табл. 1.6, дробную часть Н-кода можно вычислить по следующей схеме, помня, что 16=0.0625, а 16≈0. 0039:
Н-код 0. 2 7
Вес позиций 16-1 16-2 7·0, 0039 = 0. 0273
2·0, 0625 = 0.1250
сумма дробной части = 0. 152310
Тогда результат определяемого преобразования равен 5CBA.27H=23738.1523D.
В отношении восьмеричных чисел ограничимся лишь замечанием, что они как и шестнадцатеричные, используются для представления двоичных чисел в системе с основанием 8=23 (группа из трех бит). Методика прямых и обратных преобразований остается аналогичной, например, шестнадцатеричной системе.
Преобразование восьмеричных в шестнадцатеричные числа производится через двоичную систему счисления.
Двоично-десятичные числа. С целью удобства преобразования чистые двоичные числа представляются десятичными либо шестнадцатеричными. Хотя двоично-десятичное преобразование является не простой операцией, в калькуляторах и числовых приборах используют специальный двоично-десятичный код (DDK), когда на доступных пользователю выходах и входах используются десятичные числа. При использовании двоичных чисел для кодирования десятичных данных необходимо иметь возможность представлять цифры от 0 до 9, т.е. для изображения цифры 9 предельно требуется 4 бит для группы 10011. Однако все 4-разрядные двоичные числа, превышающие 10012, недопустимы в DDK. Чтобы освободить пользователя от подобных преобразований, в системной программе ЭВМ предусматривается специальная команда "Десятичная коррекция", обеспечивающая переполнение 4-разрядного регистра при N10=10 путем добавления числа 01102 (+610).
Пример 1.7. Произвести операции преобразования десятичного числа (D-кода) в DDK, а затем записать десятичный эквивалент (обратная задача).
Решение. Пусть имеем дело с десятичным числом 357910. Каждая цифра числа преобразуется прямо в свой двоично-десятичный эквивалент из 4 бит, в результате получаем:
Десятичное число 3 5 7 9
Двоично-десятичное число 0011 0101 0111 1001
Ответ: 357910 =0011 0101 0111 1001(2-10К).
Решим обратную задачу для DDK в виде: 1000 0010 0110 0000.
Решение. Каждая группа из 4 бит прямо переводится в ее десятичный эквивалент:
DDK 1000 0010 0110 0000
D-код 8 2 6 0
Ответ: 1000 0010 0110 0000(2-10К) =8260D.
МП складывает чистые двоичные числа, но, как отмечалось выше, они имеют команды для преобразования результата своих сложений в двоично-десятичную форму. Полученный DDK легко затем представляется в десятичной форме, используя вышеописанные простые процедуры.
Литература
Кибернетика – основа наук – под ред. проф. Карул К.В. - К. – 2009 г.
Основы микропроцессорных исчислений – под ред. Мозаев Г.Н. – М. – 2007 г.