• 2.1. Системы счисления
  • 2.2. Арифметические операции над числами, представленными в различных системах счисления
  • 2.3. Представление чисел в компьютере
  • Упражнения для самостоятельного выполнения
  • Глава 2

    Кодирование информации с помощью систем счисления

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

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

    Рис. 2.1. Классификация чисел


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

    Все системы счисления делятся на два вида: позиционные и непозиционные. В позиционных системах счисления значение цифры зависит от ее положения в числе, в непозиционных – не зависит. Самой распространенной из непозиционных систем является римская. В качестве цифр в римской системе используются следующие символы: I (1), V (5), X (10), L (50), С (100), D (500), М (1000). Значение цифры в этой системе не зависит от ее положения в числе. Величина числа в римской системе определяется как сумма и разность цифр в числе. Если меньшая цифра стоит слева от большей, то она вычитается, если справа – прибавляется.

    Рис. 2.2. Диалоговое окно «Мастер функций – шаг 1 из 2»


    Например, число 1997 (десятичная позиционная система счисления) в римской системе счисления будет выглядеть следующим образом: MCMXCVII = 1000 + (1000 – 100) + (100 – 10) + 5 + 1 + 1. Для автоматизации процесса перевода данного числа из десятичной в римскую систему счисления воспользуемся табличным процессором MS Excel.

    Для запуска программы MS Excel выполним команду: [Кнопка Пуск  – Программы – MS Office ХР – Microsoft Excel]. В любую из ячеек открывшегося окна Excel введем функцию «Римское», которая и осуществит необходимый перевод. Выполним следующие действия. Выделим, например, ячейку А1 с помощью курсора и выполним следующую команду: [Вставка – Функция]. В открывшемся диалоговом окне «Мастер функций – шаг 1 из 2» (рис. 2.2), установим «Категория: Математические» и выберем функцию «Римское». После нажатия кнопки OK появится диалоговое окно «Аргументы функции», показанное на рис. 2.3. Введем число 1997 в соответствующее поле окна и нажмем кнопку OK.

    Рис. 2.3. Диалоговое окно «Аргументы функции»


    В результате этих действий получаем в ячейке А1 искомое значение числа 1997 в римской системе счисления (рис. 2.4).

    Рис. 2.4. Лист MS Excel «Результат преобразований»


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

    или в рекуррентной форме:

    где K – представляемое число; h – основание системы счисления; а – разрядный коэффициент, а = 0, 1, 2, 3…, h-1, т. е. цифры, принадлежащие алфавиту данной системы счисления; i – номер разряда, позиция; п – число целых разрядов числа; т – число дробных разрядов числа.

    В десятичной системе счисления формула (2.2) может быть записана следующим образом:

    где а = 0, 1, 2, 3…, 9.

    Например, число 827 десятичной системы счисления в соответствии с выражением (2.3) можно представить в виде: 827 = 8 · 102 + 2 · 101 + 7 · 100.

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

    где а = 0, 1.

    Например, число 11001110112 двоичной системы счисления в соответствии с формулой (2.4) можно представить в виде: 1 · 29 + 1 · 28 + 0 · 27 + 0 · 26 + 1 · 25 + 1 · 24 + 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20.

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

    Соотношение (2.2) для восьмеричной и шестнадцатеричной системы счисления соответственно примет вид (2.5) и (2.6) :

    где а = 0, 1, 2, 3…, 7.

    Например, число 14738 восьмеричной системы счисления в соответствии с (2.5) примет вид: 1 · 83 + 4 · 82 + 7 · 81 + 3 · 80.

    где а = 0, 1, 2, 3…, 9, A, B, C, D, E, F.

    В шестнадцатеричной системе счисления используется шестнадцать цифр, из которых десять цифр арабские (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), а остальные цифры (10, 11, 12, 13, 14, 15) обозначаются буквами латинского алфавита (А = 10, В = 11, С = 12, D = 13, E = 14, F = 15).

    Например, число 33B16 шестнадцатеричной системы счисления, в соответствии с (2.6) примет вид: 3 · 162 + 3 · 161 + В · 160 (В = 11).

    При операциях с числами, представленными в различных системах счисления, необходимо указывать систему счисления числа, используя нижний индекс, например: 82710 – число 827 в десятичной системе; 11001110112 – число 1100111011 в двоичной системе; 14738 – число 1473 в восьмеричной системе; 33B16 – число 33В в шестнадцатеричной системе счисления.

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

    Преобразование чисел, представленных в десятичной системе счисления, в двоичную, восьмеричную и шестнадцатеричную системы счисления – более сложная процедура, которая может осуществляться различными способами: деления, умножения, вычитания и т. д. При этом необходимо учитывать, что способы перевода целых десятичных чисел и правильных дробей будут различаться. Для перевода целого десятичного числа, например 5310, в двоичную систему можно использовать способ деления, а десятичной правильной дроби, например 0,7510, в двоичную систему – способ умножения. Результаты действий отобразим в соответствующих табл. 2.1 и 2.2.

    Таблица 2.1

    Таким образом, 5310 = 1101012.


    Таблица 2.2

    Таким образом, 0,7510 = 0,112.


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

    Преобразуем число AF16 с помощью компьютерного калькулятора в двоичную, восьмеричную и десятичную системы счисления. Запустим программу Калькулятор с помощью команды: [Кнопка Пуск – Программы – Стандартные – Калькулятор]. После запуска программ выполним команду: [Вид – Инженерный]. У калькулятора имеется четыре опционные кнопки, расположенные слева вверху под индикатором вывода результата вычислений. При активизации кнопки Hex осуществляется преобразование числа, отображаемого в поле ввода, и результата вычислений калькулятора в шестнадцатеричную систему счисления, Dec  – в десятичную,  Oct  – в восьмеричную, Bin – в двоичную систему счисления. Активизируем кнопку Hex и введем число АF16. Последовательно переключая кнопки Bin, Oct и Dec, получим следующие результаты: АF16 = 101011112 = 2578 = 17510. На рис. 2.5 показан результат преобразования числа AF16 в число 2578.

    Рис. 2.5. Программа «Калькулятор»


    Последовательность действий при преобразовании шестнадцатеричного числа AF16 в двоичную, восьмеричную и десятичную системы счисления с помощью программы MS Excel аналогична преобразованию числа 1997 в римскую систему счисления, но здесь необходимо учесть, что вместо функции «Римское» необходимо использовать функции «ШЕСТН.В.ДВ», «ШЕСТН.В.ВОСЬМ», «ШЕСТН.В.ДЕС» категории «Инженерные» (см. рис. 2.2).

    2.2. Арифметические операции над числами, представленными в различных системах счисления

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

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

    При сложении двух единиц происходит переполнение разряда и производится перенос единицы в старший разряд, при вычитании 0–1 производится заем из старшего разряда, в таблице «Вычитание» этот заем обозначен 1 с чертой над цифрой.

    Ниже приведены примеры выполнения арифметических операций над числами, представленными в различных системах счисления:

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

    2.3. Представление чисел в компьютере

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

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

    Максимальное значение целого неотрицательного числа, которое может храниться в регистре в формате с фиксированной запятой, можно определить из формулы: 2n1, где п – число разрядов числа. Максимальное число при этом будет равно 28 – 1 = 25510 = 111111112и минимальное 010 = 000000002. Таким образом, диапазон изменения целых неотрицательных чисел будет находиться в пределах от 0 до 25510.

    В отличие от десятичной системы в двоичной системе счисления при компьютерном представлении двоичного числа отсутствуют символы, обозначающие знак числа: положительный (+) или отрицательный (-), поэтому для представления целых чисел со знаком в двоичной системе используются два формата представления числа: формат значения числа со знаком и формат дополнительного кода. В первом случае для хранения целых чисел со знаком отводится два регистра памяти (16 бит), причем старший разряд (крайний слева) используется под знак числа: если число положительное, то в знаковый разряд записывается 0, если число отрицательное, то – 1. Например, число 53610 = 00000010000110002 будет представлено в регистрах памяти в следующем виде:

    а отрицательное число -53610 = 10000010000110002 в виде:

    Максимальное положительное число или минимальное отрицательное в формате значения числа со знаком (с учетом представления одного разряда под знак) равно 2n-1 – 1 = 216-1 – 1 = 215 – 1 = 3276710 = 1111111111111112 и диапазон чисел будет находиться в пределах от -3276710 до 32767.

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

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

    1)  модуль числа записать прямым кодом в п (п = 16) двоичных разрядах;

    2)  получить обратный код числа (инвертировать все разряды числа, т. е. все единицы заменить на нули, а нули – на единицы);

    3)  к полученному обратному коду прибавить единицу к младшему разряду.

    Например, для числа -53610 в таком формате модуль будет равен 00000010000110002, обратный код – 1111110111100111, а дополнительный код – 1111110111101000. Проверим полученное значение дополнительного кода с помощью калькулятора. Для этого введем значение модуля числа -53610, т. е. число 53610, и с помощью опционной кнопки Bin преобразуем это число, представленное в десятичной системе счисления, в двоичную систему, предварительно установив опционную кнопку 2 байта. Нажав кнопку Not калькулятора, получим обратный код числа, а прибавив к обратному коду двоичную единицу,  – дополнительный код. Окончательный результат получим в поле окна программы Калькулятор (рис. 2.6). Можно поступить еще проще: набрав на калькуляторе число -53610 и активизировав кнопку Bin, получить дополнительной код этого числа в двоичной системе счисления.

    Рис. 2.6. Результат получения дополнительного кода


    Необходимо помнить, что дополнительный код положительного числа – само число.

    Для хранения целых чисел со знаком помимо 16-разрядного компьютерного представления, когда используются два регистра памяти (такой формат числа называется также форматом коротких целых чисел со знаком), применяются форматы средних и длинных целых чисел со знаком. Для представления чисел в формате средних чисел используется четыре регистра (4 х 8 = 32 бит), а для представления чисел в формате длинных чисел – восемь регистров (8 х 8 = 64 бита). Диапазоны значений для формата средних и длинных чисел будут соответственно равны: -(231 – 1) … + 231 – 1 и -(263-1) … + 263 – 1.

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

    Вещественные числа (конечные и бесконечные десятичные дроби) обрабатываются и хранятся в компьютере в формате с плавающей запятой. При таком формате представления числа положение запятой в записи может изменяться. Любое вещественное число Къ формате с плавающей запятой может быть представлено в виде:

    где А – мантисса числа; h – основание системы счисления; р – порядок числа.

    Выражение (2.7) для десятичной системы счисления примет вид:

    для двоичной —

    для восьмеричной —

    для шестнадцатеричной —

    и т. д.

    Такая форма представления числа также называется нормальной. С изменением порядка запятая в числе смещается, т. е. как бы плавает влево или вправо. Поэтому нормальную форму представления чисел называют формой с плавающей запятой. Десятичное число 15,5, например, в формате с плавающей запятой может быть представлено в виде: 0,155 · 102; 1,55 · 101; 15,5 · 100; 155,0 · 10-1; 1550,0 · 10-2 и т. д. Эта форма записи десятичного числа 15,5 с плавающей запятой не используется при написании компьютерных программ и вводе их в компьютер (устройства ввода компьютеров воспринимают только линейную запись данных). Исходя из этого выражение (2.7) для представления десятичных чисел и ввода их в компьютер преобразовывают к виду

    где Р – порядок числа,

    т. е. вместо основания системы счисления 10 пишут букву Е, вместо запятой – точку, и знак умножения не ставится. Таким образом, число 15,5 в формате с плавающей запятой и линейной записи (компьютерное представление) будет записано в виде: 0.155Е2; 1.55Е1; 15.5Е0; 155.0Е-1; 1550.0Е-2 и т.д.

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

    где |А| — абсолютное значение мантиссы числа.

    Условие (2.9) означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля, или, другими словами, если после запятой в мантиссе стоит не нуль, то число называется нормализованным. Так, число 15,5 в нормализованном виде (нормализованная мантисса) в форме с плавающей запятой будет выглядеть следующим образом: 0,155 · 102, т. е. нормализованная мантисса будет A = 0,155 и порядок Р = 2, или в компьютерном представлении числа 0.155Е2.

    Числа в форме с плавающей запятой имеют фиксированный формат и занимают в памяти компьютера четыре (32 бит) или восемь байт (64 бит). Если число занимает в памяти компьютера 32 разряда, то это число обычной точности, если 64 разряда, то это число двойной точности. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, мантиссы и порядка. Количество разрядов, которое отводится под порядок числа, определяет диапазон изменения чисел, а количество разрядов, отведенных для хранения мантиссы,  – точность, с которой задается число.

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

    1)  производится выравнивание порядков чисел, над которыми совершаются арифметические операции (порядок меньшего по модулю числа увеличивается до величины порядка большего по модулю числа, мантисса при этом уменьшается в такое же количество раз);

    2)  выполняются арифметические операции над мантиссами чисел;

    3)  производится нормализация полученного результата.

    Поясним сказанное выше на примерах.

    Пример 1

    Произведем сложение двух чисел 0,5 · 102 и 0,8 · 103 в формате с плавающей запятой.

    Решение.

    Проведем выравнивание порядков и сложение мантисс 0,05 · 103 + 0,8 · 103 = 0,85 · 103. Полученная мантисса 0,85 является нормализованной, так как удовлетворяет условию (2.9).

    Пример 2

    Произведем сложение двух чисел 0,1 · 22 и 0,1 · 23 в формате с плавающей запятой.

    Решение.

    Проведем выравнивание порядков и сложение мантисс: 0,01 · 23 + 0,1 · 23 = 0,11 · 23. Полученная мантисса 0,11 является нормализованной, так как удовлетворяет условию (2.9).

    Упражнения для самостоятельного выполнения

    1. Перевести числа, записанные в римской системе счисления, в числа десятичной системы счисления:

    a)  XL; б) СХХХ; в) CDXXVIII; г) CMLXXVI; д) MCMLII; е) MMV.

    2. Используя программу MS Excel, реализовать автоматический перевод чисел из десятичной системы счисления в римскую.

    3. Создать и заполнить все ячейки следующей таблицы, используя табличный процессор MS Excel.

    4. Используя формулы (2.1) —(2.6) записать в развернутом виде числа:

    a)  K10 = 12355; б) К8 = 321476; в) К2 = 101110011;

    г)  K16 = 143D5; е) K10 = 769,314; ж) К8 = 0,1734;

    з)  K2 = 100101,011; и) K16 = ЗА1,5С1.

    5. Заполнить все строки следующей таблицы.

    6. Правильно ли записаны числа в соответствующих системах счисления:

    а)  К2 = 100200; б) K16 = CD1; в) K10 = F,345; г) K8 = -122453?

    7. Какие из чисел 3D716, 100101112, 3758 и 134245 являются наибольшим и наименьшим?

    8. Перевести числа 23410, 100010, 30,7510, 9,810 в двоичную, восьмеричную и шестнадцатеричную системы счисления.

    9. Перевести числа 100012, 1010,012, 1111112, 1001110,0112 в десятичную, восьмеричную и шестнадцатеричную системы счисления.

    10. Перевести числа 2716, D,1B16, 4116, 25E,816 в двоичную, восьмеричную и десятичную системы счисления.

    11. Перевести числа 2378, 10508, 33,758, 0,7568 в двоичную, десятичную и шестнадцатеричную системы счисления.

    12. Какое число следует и предшествует каждому из приведенных ниже чисел:

    а) 1213; б) 9А16; в) 10011012; г) 7358 д) 23410; е) 1356; ж) 2589?

    13. Выполнить арифметические действия:

    а) 468 + 1358; г) 2128 – 1658; ж) 128 · 1378;

    б) 10101112 + 1012; д) 10110012 – 101112; з) 110121012;

    в) 1АЕ16 + 32В16; е) 10C16 – D16; и) 3D16 · 1A16.

    14. Создать и заполнить в MS Excel таблицу, записав десятичные числа в заданном компьютерном представлении:

    15. Создать и заполнить в MS Excel таблицу, записав десятичные числа в прямом, обратном и дополнительных кодах в 16-разрядном компьютерном представлении:

    16. Представить заданные числа в форме с плавающей запятой и нормализованном виде:

    а) 234,67810; б) 102410; в) 3576910; г) 0,12610;

    д) 1112; е) 478; ж) 1DC16.

    17. Произвести сложение, вычитание и умножение следующих чисел в формате с плавающей запятой:

    а) 0,537 · 102 и 0,25 · 101; б) 0,1 · 21 и 0,1 · 2-2.









    Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Вверх