- •Глава 2
- •2.1 Принципы построения систем счисления
- •2.1.1 Непозиционные системы счисления
- •2.1.2 Позиционные системы счисления
- •2.1.3 Специальные системы счисления
- •2.1.4 Выбор системы счисления
- •2.2 Виды позиционных систем счисления
- •Десятичная система счисления.
- •Двоично-десятичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления.
- •Восьмеричная система счисления
- •2.3 Перевод целых и дробных чисел из одной системы счисления в другую
- •Перевод числа из любой сс в десятичную сс
- •Перевод чисел из десятичной сс в любую другую сс
- •Перевод шестнадцатеричных чисел в десятичную сс.
- •Преобразования чисел, удобных для устных расчетов
- •Переводы чисел из одной системы в другую
- •2.4 Арифметические основы эвм
- •Арифметические операции, выполняемые в позиционных сс
- •Контрольные вопросы
- •2.4.2 Алгебраическое представление двоичных чисел
- •Контрольные вопросы
Преобразования чисел, удобных для устных расчетов
Рассмотрим алгоритм преобразования чисел, который удобен для устных расчетов и достаточно эффективен при наличии таблиц степеней основания системы, в которую осуществляется перевод. Цифры искомого числа определяются, начиная со старших разрядов, что снижает вероятность появления ошибки при переводе.
Рассмотрим примеры перевода чисел с использованием вышеописанного алгоритма.
Примеры.
Перевести число 65(10) в двоичную СС: 65(10) = 64 +1 = 26 + 20=1000001(2).
Напомним, что 26 = 64, а 20 = 1 (см. табл.1.3)
27 26 25 24 23 22 21 20 разряды переводимого числа
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
128 64 32 16 8 4 2 1 степени числа 2
+ 64 + 0 + 0 + 0 + 0 + 0 + 1 = 65 результат перевода
Переводы чисел из одной системы в другую
Если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки (23 –восьмеричная, 24 –шестнадцатеричная), достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени, и использовать приведенный ниже алгоритм.
Перевод двоичного числа в восьмеричное. Алгоритм перевода прост. Двоичное число разбивается на триады (23), каждая триада соответствует восьмеричному числу.
Пример:
А1 = 110011, 1000102 = 110 011, 100 0102 = 63,428
6 3 4 2
А2 =1111010101,112 = 001 111 010 101, 110 = 1725,68
Перевод двоичного числа в шестнадцатеричное. Алгоритм перевода прост. Двоичное число разбивается на тетрады (24), каждая тетрада соответствует шестнадцатеричному числу.
Пример:
А1 = 110011, 1000102 = 0011 0011, 1000 10002 = 33,8816
3 3 8 8
А2 = 1111010101,11 = 0011 1101 0101, 1100 = 3D5,C16
Перевод восьмеричного числа в двоичное. Алгоритм перевода прост. Каждую цифру восьмеричного числа записываем в двоичном коде триадами.
Пример:
А = 305,428 = 011 000 101,100 0102
3 0 5 4 2
Перевод шестнадцатеричного числа в двоичное. Алгоритм перевода прост. Каждую цифру шестнадцатеричного числа записываем в двоичном коде тетрадами.
Пример:
А = 7АВ,EF16 =0111 1010 1011,1110 11112
7 А В Е F
2.3.6 Перевод правильных дробей.
Перевод в десятичную СС
Перевод в десятичную СС можно выполнить с помощью описанного ранее алгоритма замещения (2.3).
Примеры.
Перевести в десятичную СС число 0,1101(2):
2-1 2-2 2-3 2-4 разряды переводимого числа
0 |
1 |
1 |
0 |
1 |
0,5 0,25 0,125 0,0625 отрицательные степени числа 2
0,1101(2) = + + 0 + = 0,5 + 0,25 + 0 + 0,0625 = 0,8125(10)
Перевести в десятичную СС число 0,71(16) :
16-1 16-2 16-3 16-4 разряды переводимого числа
0 |
7 |
1 |
0 |
0 |
0,71(16) = + = 0.4375 + 0.0039062 = 0.4414062(10) ≈0.44(10)
Шестнадцатеричные дроби представляются в виде выражения: А = + + … +
0,6А716 = + + = 0.375 + 0.039… + 0.002… = 0.416(10) (с точностью до 3 знаков)
Перевод десятичных дробей в другие СС
Рассмотрим способы перевода десятичных дробей в другую СС. Пусть в десятичной системе счисления задана дробь А и ее нужно перевести в СС с основанием р.
Алгоритм перевода десятичных дробей в другую систему счисления можно описать в виде следующей последовательности шагов:
умножить исходную дробь на основание р в исходной удобной системе счисления, причем перемножению подвергается только дробная часть;
выделить из полученного результата целую часть, и принять ее за цифру очередного разряда искомой дроби;
если достигнута необходимая точность, то дальнейшие действия прекратить. В противном случае из последнего результата умножения выделить дробную часть, принять ее за исходное число и перейти к шагу 1.
Искомая дробь в новой системе запишется в виде последовательности целых частей полученных произведений, начиная с первого.
Рассмотрим примеры перевода дробей из одной СС в другую с помощью вышеописанного алгоритма, а полученный алгоритм в исходную СС с помощью алгоритма замещения.
Примеры
Перевести в двоичную СС дробь 0,3125(10) и провести проверку результата:
а) 0,3125
х 2
0 6250
х 2
1 2500
х 2
0 5000
х 2
1 0000 Итак, 0,3125(10) =0,0101(2) с точностью 2-4
б) Перевести в десятичную СС двоичную дробь 0,0101(2):
0,0101 (2) = 0 • 2-1 + 1 • 2-2 +0 • 2-3 + 1 • 2-4 = ( + = ) = 0,3125(10).
Число последовательных произведений определяют требуемую точность.
В данном примере число произведений 4 поэтому точность 2-4.
Перевести в двоичную СС дробь 0,12(10)
а) 0, 12 Алгоритм тот же, умножение дробной части на основание
0 24 двоичной системы (р =2). 12х2 =24, 24х2=48 и т.д.
0 48
0 96
1 92
1 84
1 68
36 Итак, 0,12(10) = 0,0001111…(2) с точностью 2-7
В данном примере число произведений 7 поэтому точность 2-7, при необходимости точность можно повысить, увеличив число последовательных произведений.
б) Перевести в десятичную СС дробь 0,0001111…(2)
0,0001111(2) = 0 • 2-1 +0 •2-2 +0 •2-3 + 1•2-4 + 1 • 2-5 + 1 • 2-6 + 1 • 2-7 =
= + + + = 0.1172(10) ~ 0,12
В вычислениях двоичных дробей может пригодиться табл. 2.3.