Алгоритм перевода чисел из системы с основанием Р в десятичную
Пример 3
41810 = 4 ∙ 102 + 1 ∙101 + 8 ∙ 100
Наибольшее распространение в информатике и ВТ получили:
двоичная, восьмеричная, шестнадцатеричная системы счисления.
Алфавиты:
0, 1, 2, 9 | DEС | |
0, 1 | BIN | |
0, 1, 2, …, 7 | OCT | |
0, 1, 2, …, 9, А, B, C, D, E, F | HEX |
Заметим, что 8 = 23, 16 = 24.
Чем больше основание системы, тем меньше цифр необходимо для отображения числа.
Пример 4
4110 = 1010012 = 518 = 2916
Алгоритм перевода чисел из системы с основанием Р в десятичную
1. Пронумеровать разряды справа налево, начиная с нулевого.
2. Вычислить сумму произведений цифр в соответствующих разрядах на основание системы в степени, равной номеру разряда.
100112 | ||||
100112 = 1910 1·24 + 0·23 + 0·22 + 1·21 + 1·20 = 19
Алгоритм перевода чисел из 10-тичной в систему счисления с обоснованием Р
1. Число делится на Р. Остаток запоминается.
2. Частное вновь делится на Р. Остаток запоминается.
3. Процедура повторяется до тех пор, пока частное не станет меньше Р или равным нулю.
4. Остатки выписываются справа налево в порядке их получения.
Пример 5
а) 4610 → в двоичную
: 2 | |||||||
-46 | : 2 | ||||||
Младший разряд | -22 | : 2 | |||||
-10 | : 2 | ||||||
-4 | : 2 | ||||||
-2 | 1< P | ||||||
Старший разряд |
4610 = 1011102
Проверка: 1·25 + 0·24 + 1·23 + 1·22 + 1·21 + 0·20 = 46
б) 6010 → в шестнадцатеричную
|
: 16 | ||||
-352 | : 16 | |||
Младший разряд | -16 | 1< P | ||
Старший разряд |
36410 = 16С16
Проверка: 1·162 + 6·161 + 12·160 = 256 + 96 + 12
Алгоритм перевода чисел из двоичной системы счисления в систему с основанием, 2n
1. Объединить цифры двоичного числа в группы по столько цифр, сколько степень двойки в основании системы (справа налево группировка).
2. Переводим группы цифр в цифры нужного алфавита.
Пример 6
11001002 → ОСТ и НЕХ
001 100 100 в основании системы 23 (если надо добавим нули)
1 4 4 1448
0110 0100 в основании системы 24 (если надо добавим нули)
6 4 6416
Арифметические действия в позиционных системах счисления, выполняются аналогично вычислениям в десятичной системе счисления
Пример 7
2110 + 8110 = 10210
+ | ||
Для других систем счисления необходимо составить таблицы простейших действий.
Для двоичной системы:
сложение | умножение | |||||||
+ | + | + | + | × | × | × | × | |
переполнение разрядной сетки и перенос единицы в старший разряд |
Пример 8
Умножить 1110 × 310 = 3310 перейдя к двоичному виду
× | |||||
+ | |||||
Проверка: 1000012 = 1·25 + 0·24 + 0·23 + 0·22 + 0·21 + 1·20 = 3310
Пример 9
Сложение 5910 + 4410 = 10310 перейдя к шестнадцатеричному виду
В | ||
× | С | |
Проверка: 6716 = 6·161 + 7·160 = 10310
Умножить 5910 + 4410 = 259610 перейдя к шестнадцатеричному виду
В | |||
× | С | ||
С | |||
+ | |||
А |
Проверка: А2416 = 10·162 + 2·161 + 4·160 = 259610
Дополнительный код.
Дополнительный код положительного числа совпадает с его прямым (обычным) кодом, при этом код нужно слева дополнить таким количеством нулей, чтобы не происходило переполнения разрядной сетки при вычислениях.
Замечание:
1. целесообразно выбирать разрядную сетку кратную байту, т.е 8-ми разрядам.
2. при сложении нескольких чисел результат не должен вызывать переполнение разрядной сетки.
Пример 10
30510 + 20010 = 505 > 256 = 28, т.е. 1 байта будет мало, надо 2 байта
305 + 200 = 505 = 1111110012 = 0000 0001 1111 1001 → 2 байта
6310 + 3610 = 99 < 28 → 1 байт
63 + 36 = 99 = 11000112 = 0110 0011 → 1 байт
Дополнительный код целого отрицательного числа
1. записать прямой код модуля числа (в нужном количестве разрядов)
2. инвертировать его (заменить 0 на 1 и 1 на 0).
3. прибавить к инверсному коду 1.
Пример 10
Представить в дополнительном коде -810. |-8| = 8 = 10002 = 0000 1000
Модуль числа – 8 в двоичной форме | |||||||||
Инверсия модуля отрицательного числа | |||||||||
+ | |||||||||
единица в старшем разряде признак отрицательного числа |
Сложение основного и дополнительного кодов дают нуль, т.е. дополнительный код дополняет до нуля.
+ | - 8 | ||||||||||
1 |
Пример 11
2510 – 510 = 2510 + (-5)10 = 2010
Пример 12
Провести следующие вычисления в двоичной форме: 2510 – 3510 = - 1010
2510 = 0001 10012 3510 = 0010 00112
|-3510| = 0010 00112 модуль числа - 3510
= 1101 11002 инверсия модуля числа - 3510
1101 11012 дополнительный код числа - 3510
+ | дополнительный код числа - 3510 | |||||||||
старший разряд 1 | ||||||||||
инверсия результата | ||||||||||
+ | + 1 | |||||||||
результат вычитания |
Проверка: 0000 10102 = 0·27 + 0·26 + 0·25 + 0·24 + 1·23 + 0·22 + 1·21 + 0·20 = 1010
Пример 13
Провести следующие вычисления в шестнадцатеричной форме: 4410 – 5910 = - 1510
4410 = 2С16
|-5910| = 3В16 модуль числа - 3510
= С416 инверсия модуля числа - 5910
С516 дополнительный код числа - 5910
С | ||||
+ | С | дополнительный код числа - 3510 | ||
F | старший разряд 1 | |||
Е | инверсия результата | |||
+ | + 1 | |||
F | результат вычитания |
Проверка: 0F16 = 0·161 + 15·160 = 1510
Пример 14
Перевести число 10,110 в двоичный вид
1. целая часть числа 1010 = 10102
2. дробная часть числа 0,1
N п/п | запоминаем | ||||
0,1 | × | 0,2 | |||
0,2 | × | 0,41 | |||
0,4 | × | 0,8 | |||
0,8 | × | 1,6 | |||
0,6 | × | 1,2 | |||
0,2 | × | 0,4 | |||
0,4 | × | 0,8 | |||
0,8 | × | 1,6 | |||
0,6 | × | 1,2 | |||
0,2 | × | 0,4 |
Проверка: 10,00011001102 = 1·23 + 0·22 + 1·21 + 0·20 + 0·2-1 + 0·2-2 + 0·2-3 + 1·2-4 + 1·2-5 +
0·2-6 + 0·2-7 + 1·2-8 + 1·2-9 + 0·2-10 = 10,099609…
Видно, что результат и исходное число в дробной части отличаются.
Вычислим погрешность для дробной части нашего случая с числом двоичных разрядов после запятой 10
Nисходное – Nполучившееся = абсолютная погрешность
относительная погрешность в процентах.
В нашем случае для : 0,391%.
Расчеты целесообразно вести до разумных пределов по погрешности или до ограничения разрядной сеткой.
Пример 15
Переведем число 973,23210 в шестнадцатеричный код
N п/п | запоминаем | ||||
0,232 | × | 3,712 | |||
0,712 | × | 11,392 | В | ||
0,392 | × | 6,272 | |||
0,272 | × | 4,352 |
973,23210 = 3CD,3B6416
Ограничим число разрядов после запятой. Перевести число 3CD,3B16 в десятичный код:
3CD,3B16 = 3·162 + 12·161 + 13·160 + 3·16-1 + 11·16-2 = 973,2304710
Погрешность 0,202 %
Сложение дробной части вещественного числа в любой системе исчисления осуществляется традиционным образом, т.е. как и децимальной. При этом перенос в целую часть числа особенностей не имеет.
Пример 16
Сложить числа 0,510 + 0,62510 = 1,12510 в двоичной форме
0,510 = 0,12 0,62510 = 0,1012
0, | ||||
+ | 0, | |||
1, |
0,12 + 0,1012 = 1,0012
Проверка: 1,0012 = 1·20 + 0·2-1 + 0·2-2 + 1·2-3 = 1,12510
Пример 17
а) Закодируйте выражение 25+10·(9-7)/4 = 30 в кодах ASCII-шестнадцатеричный
0032 0035 002В 0031 0030 00B7 0028 0039 002D 0037 0029 002F 0034 003D 0033 0030
б) Закодируйте выражение ″Двоичное кодирование″ в кодах ASCII-десятичный
2033 196 226 238 232 247 237 238 229 32 234 238 228 232 240 238 226 224 237 232 229 2033
в) найти опечатку в коде слова «Organization»
171 79 114 103 97 110 105 122 97 116 105 109 110 187
Пример 3
41810 = 4 ∙ 102 + 1 ∙101 + 8 ∙ 100
Наибольшее распространение в информатике и ВТ получили:
двоичная, восьмеричная, шестнадцатеричная системы счисления.
Алфавиты:
0, 1, 2, 9 | DEС | |
0, 1 | BIN | |
0, 1, 2, …, 7 | OCT | |
0, 1, 2, …, 9, А, B, C, D, E, F | HEX |
Заметим, что 8 = 23, 16 = 24.
Чем больше основание системы, тем меньше цифр необходимо для отображения числа.
Пример 4
4110 = 1010012 = 518 = 2916
Алгоритм перевода чисел из системы с основанием Р в десятичную
1. Пронумеровать разряды справа налево, начиная с нулевого.
2. Вычислить сумму произведений цифр в соответствующих разрядах на основание системы в степени, равной номеру разряда.
100112 | ||||
100112 = 1910 1·24 + 0·23 + 0·22 + 1·21 + 1·20 = 19