При переводе чисел из любой системы счисления в десятичную достаточно записать число по общей формуле (по степеням основания исходной системы счисления) и подсчитать значение многочлена:
Разряды 3 2 1 0 -1
Число 1 0 1 1, 1(2) = 1×23 + 0×22 + 0×21 + 1×20 + 0×2–1 = 11,5(10).
Разряды 2 1 0 -1
Число 2 7 6, 5(8) = 1×82 + 7×81 + 6×20 + 5×8–1 = 190,625(10).
Разряды 2 1 0
Число 1 F 3(16) = 1×162 + 15×161 +3×160 = 499(10).
Перевод десятичного числа в любую систему счисления производится отдельно для целой и дробной его частей.
Для перевода целой части десятичного числав любую систему счисления необходимо делить десятичное число на основание новой системы нацело (с остатком), полученное частное снова делить и так продолжать деление до тех пор, пока последнее частное не окажется меньше основания новой системы счисления. Целая часть числа в новой системе счисления запишется из получившихся при делении остатков, взятых в порядке, обратном их получению.
Схема алгоритма перевода целой части десятичного числа А в произвольную систему счисления с основанием р приведена на рис. 4.8. К расширенному понятию «алгоритм» мы обратимся в следующей теме курса, а пока дадим его определение с позиций теории множеств.
Алгоритмом называется двусортное множество
,
где – множество правил (процедур) решения задачи, обладающих следующими свойствами:
· массовости (инвариантности относительно входных данных);
· детерминированности (однозначности применения этих правил на каждом шагу);
· результативности (получения после применения этих правил искомого результата);
· элементарности (прозрачности) (отсутствия необходимости дальнейшего уточнения правил);
– бинарное отношение в множестве
(
,
, если после процедуры
выполняется процедура
.
Рис. 4.8. Алгоритм перевода целой части десятичных чисел
Пример. Переведём число 27 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную системы:
Результат перевода: 27(10) = 11011(2) = 33(8) = 1B(16). ▲
Перевод дробной части десятичного числа часто можно выполнить не точно, а с некоторой погрешностью. При этом надо определить необходимую точность (погрешность) перевода (задать количество значащих цифр после запятой).
Для перевода дробной части десятичного числа в любую систему счисления (рис. 4.9) необходимо умножить десятичное число А на основание новой системы р, полученную дробную часть снова умножить и так до тех пор, пока не получится требуемое количество К значащих цифр после запятой в числе в новой системе счисления.
Рис. 4.9. Алгоритм перевода дробной части десятичных чисел
Пример. Переведём с точностью до 3 знаков после запятой число 0,35 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную системы:
Результат перевода: 0,35(10) = 0,010(2) = 0,263(8) = 0,599(16). ▲
Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему счисления достаточно прост.
Изображения целых чисел в восьмеричной и шестнадцатеричной системах счисления вместе с их двоичным и десятичными эквивалентами представлены в табл. 4.1.
Таблица 4.1
Количественные эквиваленты чисел в системах счисления
Основание системы счисления | Основание системы счисления | ||||||
А | В С D Е F 1 А 1 F |
Для перевода восьмеричного (шестнадцатеричного)числав двоичную систему достаточно каждую восьмеричную (шестнадцатеричную) цифру заменить тремя (четырьмя) двоичными цифрами:
537,1(8) = 101 011 111, 001(2); 1А3,F(16) = 1 1010 0011, 1111(2).
5 3 7 1 1 A 3 F
Для перевода двоичного числа в восьмеричную (шестнадцатеричную)систему счисления необходимо разделить двоичное число слева и справа от запятой на группы из трёх (четырёх) цифр и каждую группу заменить восьмеричной (шестнадцатеричной) цифрой. Если в крайних группах окажется меньше трёх (четырёх) цифр, то можно спереди целой части и позади дробной части числа, дописать необходимое количество нулей (эта операция не меняет значения исходного двоичного числа):
10101001,10111(2) = 010 101 001, 101 110(2) = 251,56(8);
2 5 1, 5 6
10101001,10111(2) = 1010 1001, 1011 1000(2) = А9,В8(16).
А 9, В 8