01УправлИинформ2020. Информатика информатика это комплекс дисциплин по решению проблем управления системами с применением их моделей на компьютере. Тема информация и управление
Скачать 0.73 Mb.
|
2. Двоичная система счисленияВ вычислительной технике, в устройствах автоматики и связи широко используется двоичная система счисления. Это связано с тем, что в таких устройствах используются элементы с двумя устойчивыми состояниями (например, есть заряд на конденсаторе или нет). Двоичная система – это система с наименьшим возможным основанием. В ней для изображения числа используются только две цифры: 0 и 1. Произвольное число в двоичной системе счисления представляется в виде полинома: X = аm*2m+аm-1*2m-1+...+а1*21 +а0*20+а-1*2-1 +...+а - m*2-m . (3) Примеры чисел в двоичной системе счисления: 1 = 12 2 = 102 3 = 112 4 = 1002 5 = 1012 0.5 = 0.12 0.25 = 0.012 Таблица сложений чисел в двоичной системе счисления имеет вид 0+0=0 0+1=1 1+0=1 1+1=10 Таблица умножений чисел в двоичной системе счисления имеет вид 0*0=0 0*1=0 1*0=0 1*1=1 3. Восьмеричная и шестнадцатеричная системы счисленияВ вычислительной технике используются и другие позиционные системы: восьмеричная и шестнадцатеричная. СИСТЕМЫ СЧИСЛЕНИЯ R=2,8,16 Базисные числа Двоич. Дес. 8 Шест. Двоич. Дес. 8 Шест. 0000 0 0 0 1000 8 10 8 0001 1 1 1 1001 9 11 9 0010 2 2 2 1010 10 12 A 0011 3 3 3 1011 11 13 B 0100 4 4 4 1100 12 14 C 0101 5 5 5 1101 13 15 D 0110 6 6 6 1110 14 16 E 0111 7 7 7 1111 15 17 F Ввосьмеричной системе счисления базисными числами являются 0, 1, 2, 3, 4, 5, 6, 7. Запись любого числа в этой системе основывается на его разложении по степеням числа восемь с коэффициентами из базисного набора. Вшестнадцатеричной системе счисления базисными являются числа от нуля до пятнадцати. Для обозначения первых девяти чисел используются арабские числа от нуля до девяти, остальные обозначаются латинскими буквами a, b, c, d, e, f. 4. Перевод чисел из одной системы счисления в другуюПри решении задач с помощью ЭВМ исходные данные обычно задаются в десятичной системе счисления; в этой же системе, как правило, нужно получать и окончательные результаты. Поскольку в современных ЭВМ данные кодируются в основном в двоичных кодах, то возникает задача перевода чисел из одной системы счисления в другую. Ограничимся рассмотрением систем счисления, у которых базисными числами являются последовательные числа 0, 1,... R-1, где R – основание системы. Задача перевода заключается в следующем. Пусть известна запись числа х в системе счисления с основанием R: Rn Rn-1... R1 R0 R-1 R-2..., где Ri – цифры R-ичной системы. Требуется найти запись этого же числа в системе с основанием Q: Qn Qn-1... Q1 Q0 Q-1 Q-2..., где Ri – цифры R-ичной системы, Qi – цифры Q-ичной системы Способ 1. Перевод чисел из Q в Р-ичную системуПеревод Q → P. Задача сводится к вычислению полинома вида Х = anQn + an-1Qn-1 +...+a1Q1 + a0Q0 + a-1Q-1 +...+ a -mQ-m. (4) Для получения P-ичного изображения (4) необходимо все цифры ai и число Q заменить P-ичными изображениями и выполнить арифметические операции в P-ичной системе счисления. Пример. Перевести х = 3718 в десятичную систему счисления. Запишем число 3718 в виде х = 3*82 +7*81 + 1*80 и выполним все необходимые действия в десятичной системе: х = 3*64 + 7*8 + 1 = 192+56+1 = 249. Способ 2. Перевод чисел из Р в Q-ичную системуПеревод P → Q. Рассмотрим случай перевода целых чисел. Пусть известна запись целого числа N в системе счисления с основанием P и требуется перевести это число в систему с основанием Q. Поскольку N – целое, то его запись в Q-ичной системе счисления имеет вид N = as as-1 ... a1 a0, где ai – искомые цифры Q-ичной системы. Для определения a0 разделим обе части равенства N = asQs + as-1Qs-1 +...+a1Q1 + a0 (5) на число Q, причем в левой части произведем деление, пользуясь правилами P-ичной арифметики, а правую часть перепишем в виде N/Q = asQs-1 + as-1Qs-2 +...+a1 + a0/Q. Приравниваем между собой полученные целые и дробные части (учитывая, что ai < Q): [N/Q] = asQs-1 + as-1Qs-2 +...+a1, [N/Q] = a0/Q. Таким образом, младший коэффициент a0 в разложении (5) определяется соотношением a0 = Q[N/Q]. Положим N1 = [N/Q] = asQs-1 + as-1Qs-2 +...+a1. Тогда N1 будет целым числом и к нему можно применить ту же самую процедуру для определения следующего коэффициента a1 и т. д. Таким образом, при условии, что N0 = N, перевод чисел с использованием Р-ичной арифметики осуществляется по следующим рекуррентным формулам ai = Q[Ni/Q], (6) Ni +1 = [Ni /Q], (i = 0, 1, 2, ...) Этот процесс продолжается до тех пор, пока не будет получено Ni +1 = 0. Пример. Перевести число N = 47 в двоичную систему. Применяя формулы (6) при Q=2, имеем 47:2 = 23(1); 23:2 = 11(1); 11:2 = 5(1); 5:2 = 2(1); 2:2 = 1(0); 1:2 = 0(1). Поскольку числа нуль и единица в обеих системах счисления обозначаются одинаковыми цифрами 0 и 1, то в процессе деления сразу получим двоичные изображения искомых цифр: N = 1011112. Примеры перевода чисел из одной системы счисления в другуюНаиболее часто встречающиеся системы счисления – это двоичная, шестнадцатеричная и десятичная. Как же связаны между собой представления числа в различных системах счисления? Рассмотрим различные способы перевода чисел из одной системы счисления в другую на конкретных примерах. Способ 1. Пусть требуется перевести число 567 из десятичной в двоичную систему. Сначала определим максимальную степень двойки, такую, чтобы два в этой степени было меньше или равно исходному числу. В нашем случае это 9, так как 29=512, а 210=1024, что больше начального числа. Таким образом, мы получим число разрядов результата. Оно равно 9+1=10. Поэтому результат будет иметь вид 1ххххххххх, где вместо х могут стоять любые двоичные цифры. Найдем вторую цифру результата. Возведем двойку в степень 9 и вычтем из исходного числа: 567-29=55. Остаток сравним с числом 28=256. Поскольку 55 меньше 256, то девятый разряд будет нулем, т. е. результат примет вид 10хххххххх. Рассмотрим восьмой разряд. Поскольку 27=128>55, то и он будет нулевым. Седьмой разряд также оказывается нулевым. Искомая двоичная запись числа принимает вид 1000хххххх. 25=32<55, поэтому шестой разряд равен 1 (результат 10001ххххх). Для остатка 55-32=23 справедливо неравенство 24=16<23, что означает равенство единице пятого разряда. Действуя аналогично, получаем в результате число 1000110111. Мы разложили данное число по степеням двойки: 567=1*29+0*28+0*27+0*26+1 *25+1*24+0*23+1 *22 +1 *21+1 *20 . Способ 2. При другом способе перевода чисел используется операция деления в столбик. Рассмотрим число 567. Разделив его на 2, получим частное 283 и остаток 1. Проведем ту же самую операцию с числом 283. Получим частное 141, остаток 1. Опять делим полученное частное на 2, и так до тех пор, пока частное не станет меньше делителя. Теперь для того, чтобы получить число в двоичной системе счисления, достаточно записать последнее частное, то есть 1 и приписать к нему справа в обратном порядке все полученные в процессе деления остатки. Результат, естественно, не изменился: 567 в двоичной системе счисления записывается как 1000110111. Эти два способа применимы при переводе числа из десятичной системы в систему с любым основанием. Для закрепления навыков рассмотрим перевод числа 567 в систему счисления с основанием 16. Способ последовательного деления в столбик, с единственным отличием в том, что делить надо не на 2, а на 16. Процесс деления заканчивается, когда частное становится меньше 16. Конечно, не надо забывать и о том, что для записи числа в шестнадцатеричной системе счисления необходимо заменить 10 на A, 11 на B и так далее. Для того, чтобы получить число в шестнадцатеричной системе счисления, достаточно записать последнее частное, то есть 2, приписать к нему справа в обратном порядке все полученные в процессе деления остатки. Результат, естественно, не изменился: 567 в шестнадцатеричной системе счисления записывается как 23716. Операция перевода в десятичную систему выглядит гораздо проще, так как любое число можно представить в виде x = a0*Rn + a1*Rn-1 + ... + an-1*R1 + an*R0, где a0 ... an – это цифры данного числа в системе счисления с основанием R. Подставим вместо цифр базисные числа и десятичное представление R. Например, переведем число 4A3F в десятичную систему. По определению, 4A3F = 4*163 + A*162 + 3*16 + F. Заменив A на 10, а F на 15, получим 4*163 + 10*162 + 3*16 + 15 = 19007. 5. Перевод чисел в системах с основаниями 2, 8, 16Пожалуй, проще всего осуществляется перевод чисел из двоичной системы в системы с основанием, равным степеням двойки (8 и 16), и наоборот. Для того чтобы целое двоичное число записать в системе счисления с основанием 2n, (n = 4 для шестнадцатеричных чисел и n = 3 для восьмеричных чисел) нужно: заданное двоичное число разбить справа налево на группы по n цифр в каждой; если в последней левой группе окажется меньше n разрядов, то дополнить ее нулями до нужного числа разрядов; рассмотреть каждую группу как n-разрядное двоичное число и заменить ее соответствующей цифрой в системе счисления с основанием 2n (таблицы 1 и 2). Таблица 1. Двоично-шестнадцатеричная таблица
Таблица 2. Двоично-восьмеричная таблица
Вопросы для самопроверкиПереведите в десятичную систему счисления: а) 100011102; б) 123458; в) AA02D34B16. Сравните два числа: а) 10268 и 21616; в) 111112 и 111113. |