Предыдущая лекция
|
Содержание
|
Следующая лекция
Информатика. Лекция №2. Системы счисления (начало).
Представление о системах счисления.
Система счисления(далее СС) - совокупность приемов и правил для записи чисел цифровыми
знаками.
Наиболее известна десятичная СС, в которой для записи чисел используются цифры 0,1,:,9.
Способов записи чисел цифровыми знаками существует бесчисленное множество. Любая
предназначенная для практического применения СС должна обеспечивать:
- возможность представления любого числа в рассматриваемом диапазоне величин;
- единственность представления (каждой комбинации символов должна соответствовать одна и только одна величина);
- простоту оперирования числами;
В зависимости от способов изображения чисел цифрами, системы счисления делятся на непозиционные
и позиционные. Непозиционной системой называется такая, в которой количественное значение
каждой цифры не зависит от занимаемой ей позиции в изображении числа (римская система счисления).
Позиционной системой счисления называется такая, в которой количественное значение каждой
цифры зависит от её позиции в числе (арабская система счисления). Количество знаков или
символов, используемых для изображения числа, называется основанием системы счисления.
Позиционные системы счисления имеют ряд преимуществ перед непозиционными: удобство выполнения
арифметических и логических операций, а также представление больших чисел, поэтому в цифровой
технике применяются позиционные системы счисления.
Запись чисел может быть представлена в виде
,
где A(D) - запись числа A в СС D;
Di - символ системы, образующие базу.
По этому принципу построены непозиционные СС.
В общем же случае системы счисления: A(B)=a1B1+a2B2
+...+anBn. Если положить, что Bi=q*Bi-1, а
B1=1, то получим позиционную СС. При q=10 мы имеем дело с привычной нам десятичной СС.
На практике также используют другие СС:
q |
Название |
Цифры |
2 |
двоичная |
0,1 |
3 |
троичная |
0,1,2 |
8 |
восьмеричная |
0,...,7 |
16 |
шестнадцатиричная |
0,...,9,A, ...,F |
Каждая СС имеет свои правила арифметики (таблица умножения, сложения). Поэтому, производя
какие-либо операции над числами, надо помнить о СС, в которой они представлены.
Если основание системы q превышает 10, то цифры, начиная с 10, при записи обозначают
прописными буквами латинского: A,B,...,Z. При этом цифре 10 соответствуею знак 'A',
цифре 11 - знак 'B' и т.д. В таблице ниже приводятся десятичные числа от 0 до 15 и их
эквивалент в различных СС:
q=10 |
q=2 |
q=16 |
0 |
0 |
0 |
1 |
1 |
1 |
2 |
10 |
2 |
3 |
11 |
3 |
4 |
100 |
4 |
5 |
101 |
5 |
6 |
110 |
6 |
7 |
111 |
7 |
8 |
1000 |
8 |
9 |
1001 |
9 |
10 |
1010 |
A |
11 |
1011 |
B |
12 |
1100 |
C |
13 |
1101 |
D |
14 |
1110 |
E |
15 |
1111 |
F |
В позиционной СС число можно представить через его цифры с помощью следующего многочлена
относительно q:
A=a1*q0+a2*q1+...+an*qn (1)
Выражение (1) формулирует правило для вычисления числа по его цифрам в q-ичной СС. Для
уменьшения количества вычислений пользуются т.н. схемой Горнера. Она получается
поочередным выносом q за скобки:
A=(...((an*q+an-1)*q+an-2)*q+...)*q+a1
результат вычисления многочлена будет всегда получен в той системе счисления, в которой будут
представлены цифры и основание и по правилам которой будут выполнены операции.
Преобразование чисел из одной системы счисления в другую.
Правила перевода целых чисел
Результатом является целое число.
1. Из десятичной системы счисления - в двоичную и шестнадцатеричную:
- исходное целое число делится на основание системы счисления, в которую переводится (2 или 16); получается частное и остаток;
- если полученное частное не делится на основание системы счисления так, чтобы образовалась целая часть, отличная от нуля, процесс умножения прекращается, переходят к шагу в). Иначе над частным выполняют действия, описанные в шаге а);
- все полученные остатки и последнее частное преобразуются в соответствии с таблицей в цифры той системы счисления, в которую выполняется перевод;
- формируется результирующее число: его старший разряд - полученное последнее частное, каждый последующий младший разряд образуется из полученных остатков от деления, начиная с последнего и кончая первым. Таким образом, младший разряд полученного числа - первый остаток от деления, а старший - последнее частное.
Пример 3.1. Выполнить перевод числа 19 в двоичную систему счисления:
Пример 3.2. Выполнить перевод числа 19 в шестнадцатеричную систему счисления:
Пример 3.3. Выполнить перевод числа 123 в шестнадцатеричную систему счисления:
2. Из двоичной и шестнадцатеричной систем счисления - в десятичную. В этом случае
рассчитывается полное значение числа по формуле.
Пример 3.4. Выполнить перевод числа 1316 в десятичную систему счисления. Имеем:
1316 = 1*161 + 3*160 = 16 + 3 = 19.
Таким образом, 1316 = 19.
Пример 3.5. Выполнить перевод числа 100112 в десятичную систему счисления. Имеем:
100112 = 1*24 + 0*23 + 0*22 + 1*21
+ 1*20 = 16+0+0+2+1 = 19.
Таким образом, 100112 = 19.
3. Из двоичной системы счисления в шестнадцатеричную:
- исходное число разбивается на тетрады (т.е. 4 цифры), начиная с младших разрядов. Если количество цифр исходного двоичного числа не кратно 4, оно дополняется слева незначащими нулями до достижения кратности 4;
- каждая тетрада заменятся соответствующей шестнадцатеричной цифрой в соответствии с таблицей
Пример 3.6. Выполнить перевод числа 100112 в шестнадцатеричную систему счисления.
Поскольку в исходном двоичном числе количество цифр не кратно 4, дополняем его слева незначащими
нулями до достижения кратности 4 числа цифр. Имеем:
В соответствии с таблицей 00112 = 112 = 316 и
00012 = 12 = 116.
Тогда 100112 = 1316.
4. Из шестнадцатеричной системы счисления в двоичную:
- каждая цифра исходного числа заменяется тетрадой двоичных цифр в соответствии с таблицей. Если в таблице двоичное число имеет менее 4 цифр, оно дополняется слева незначащими нулями до тетрады;
- незначащие нули в результирующем числе отбрасываются.
Пример 3.7. Выполнить перевод числа 1316 в двоичную систему счисления.
По таблице имеем: 116 = 12 и после дополнения незначащими нулями
12 = 00012; 316 = 112 и после дополнения
незначащими нулями 112 = 00112. Тогда 1316 = 000100112.
После удаления незначащих нулей имеем 1316 = 100112.
Правила перевода правильных дробей
Результатом является всегда правильная дробь.
1. Из десятичной системы счисления - в двоичную и шестнадцатеричную:
- исходная дробь умножается на основание системы счисления, в которую переводится (2 или 16);
- в полученном произведении целая часть преобразуется в соответствии с таблицей в цифру нужной системы счисления и отбрасывается - она является старшей цифрой получаемой дроби;
- оставшаяся дробная часть вновь умножается на нужное основание системы счисления с последующей обработкой полученного произведения в соответствии с шагами а) и б).
- процедура умножения продолжается до тех пор, пока ни будет получен нулевой результат в дробной части произведения или ни будет достигнуто требуемое количество цифр в результате;
- формируется результат: последовательно отброшенные в шаге б) цифры составляют дробную часть результата, причем в порядке уменьшения старшинства.
Пример 3.8. Выполнить перевод числа 0,847 в двоичную систему счисления. Перевод выполнить до
четырех значащих цифр после запятой.
Имеем:
В данном примере процедура перевода прервана на четвертом шаге, поскольку получено требуемое
число разрядов результата. Очевидно, это привело к потере ряда цифр.
Таким образом, 0,847 = 0,11012.
Пример 3.9. Выполнить перевод числа 0,847 в шестнадцатеричную систему счисления.
Перевод выполнить до трех значащих цифр.
В данном примере также процедура перевода прервана.
Таким образом, 0,847 = 0,D8D2.
2. Из двоичной и шестнадцатеричной систем счисления - в десятичную. В этом случае
рассчитывается полное значение числа по формуле, причем коэффициенты ai
принимают десятичное значение в соответствии с таблицей.
Пример 3.10. Выполнить перевод из двоичной системы счисления в десятичную числа
0,11012. Имеем:
0,11012 = 1*2-1 + 1*2-2 + 0*2-3 +1*2-4
= 0,5 + 0,25 + 0 + 0,0625 = 0,8125.
Расхождение полученного результата с исходным для получения двоичной дроби числом вызвано
тем, что процедура перевода в двоичную дробь была прервана.
Таким образом, 0,11012 = 0,8125.
Пример 3.11. Выполнить перевод из шестнадцатеричной системы счисления в десятичную числа
0,D8D16. Имеем:
0,D8D16 = 13*16-1 + 8*16-2 + 13*16-3 =
13*0,0625 + 8*0,003906 + 13* 0,000244 = 0,84692.
Расхождение полученного результата с исходным для получения двоичной дроби числом вызвано тем, что процедура перевода в шестнадцатеричную дробь была прервана.
Таким образом, 0,D8D16 = 0,84692.
3. Из двоичной системы счисления в шестнадцатеричную:
- исходная дробь делится на тетрады, начиная с позиции десятичной точки вправо. Если количество цифр дробной части исходного двоичного числа не кратно 4, оно дополняется справа незначащими нулями до достижения кратности 4;
- каждая тетрада заменяется шестнадцатеричной цифрой в соответствии с таблицей.
Пример 3.12. Выполнить перевод из двоичной системы счисления в шестнадцатеричную числа
0,11012. Имеем:
0,11012 = 0,11012
В соответствии с таблицей 11012 = D16. Тогда имеем
0,11012 = 0,D16.
Пример 3.13. Выполнить перевод из двоичной системы счисления в шестнадцатеричную числа
0,00101012.
Поскольку количество цифр дробной части не кратно 4, добавим справа незначащий ноль:
0,00101012 = 0,001010102.
В соответствии с таблицей 00102 = 102 = 216
и 10102 = A16. Тогда имеем 0,00101012 = 0,2A16.
4. Из шестнадцатеричной системы счисления в двоичную:
- каждая цифра исходной дроби заменяется тетрадой двоичных цифр в соответствии с таблицей;
- незначащие нули отбрасываются.
Пример 3.14. Выполнить перевод из шестнадцатеричной системы счисления в двоичную числа 0,2А16.
По таблице имеем 216 = 00102 и А16 = 10102.
Тогда 0,2А16 = 0,001010102.
Отбросим в результате незначащий ноль и получим окончательный результат: 0,2А16 = 0,00101012.
Правило перевода дробных чисел
Отдельно переводится целая часть числа, отдельно - дробная. Результаты складываются.
Пример 3.15. Выполнить перевод из десятичной системы счисления в шестнадцатеричную числа 19,847. Перевод выполнять до трех значащих цифр после запятой.
Представим исходное число как сумму целого числа и правильной дроби:
19,847 = 19 + 0,847.
Как следует из примера 3.2, 19 = 1316; а в соответствии с примером 3.9 0,847 = 0,D8D16.
Тогда имеем:
19 + 0,847 = 1316 + 0,D8D16 = 13,D8D16.
Таким образом, 19,847 = 13,D8D16.