Получение числа по его дополнительному коду
а) Если в коде старший бит числа равен 0, то есть число положительное. Такое число переводим в десятичную систему счисления в соответствии с правилами позиционной системы исчисления;
б) Если в коде старший бит числа равен 1, то число отрицательное, тогда:
1) инвертируем число;
2) прибавляем 1;
3) переводим в десятичную систему счисления в соответствии с правилами позиционной системы исчисления;
4) записываем со знаком «-».
Использование дополнительного кода позволяет заменить операцию вычитания на операцию сложения.
Пример 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
Представление вещественных чисел
Для практических вычислений формат с плавающей запятой не используется – это формат представления чисел в памяти ЭВМ, не удобна.
Вещественное число N можно представить в системе счисления с основанием k в виде полинома:
,
здесь дробная часть любого вещественного числа содержит ∞ число членов.
Перевод вещественных положительных чисел из 10-ной системы счисления в систему с основанием Р
1) целая часть переводится как в случае с целыми числами;
2) дробная часть умножается на Р, целая часть результата запоминается и отбрасывается.
3) вновь полученная дробная часть умножается на Р и т.д.
4) Процедура продолжается до тех пор, пока дробная часть не станет равной нулю (или в пределе стремится к нулю, т.к. дробь в пределе является бесконечной);
5) полученный код отделяем от целой части запятой.
Пример 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