Информатика. 10 класса. Босова Л.Л. Оглавление
§11. Перевод чисел из одной позиционной системы счисления в другую
11.1. Перевод целого десятичного числа в систему счисления с основанием q
Для перевода целого десятичного числа в систему счисления с основанием q следует:
1) последовательно выполнять деление данного числа и получаемых целых частных на основание новой системы счисления до тех пор, пока не получится частное, равное нулю;
2) полученные остатки, являющиеся цифрами числа в новой системе счисления, привести в соответствие алфавиту новой системы счисления;
3) составить число в новой системе счисления, записывая его, начиная с последнего остатка.
Рассмотрим примеры перевода целых десятичных чисел в 2-ичную, 8-ричную и 16-ричную системы счисления.
Пример 1.

Пример 2.

Пример 3.

Пример 4. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись десятичного числа 22 оканчивается на 4.
Поскольку запись числа в системе счисления с основанием q заканчивается на 4, остаток от деления числа 22 на q равен 4: 22 mod q = 41). Следовательно, 18 mod q = 0. Это верно для q ? {18, 9, 6, 3, 2, 1}.
1) Операция mod — вычисление остатка от целочисленного деления.
Так как в новой системе счисления запись числа оканчивается на 4, то q > 4. Следовательно, условию задачи удовлетворяют основания: 18, 9 и 6.
11.2. Перевод целого десятичного числа в двоичную систему счисления
Перевод целого десятичного числа, безусловно, может осуществляться по рассмотренному выше универсальному алгоритму. Но для чисел в пределах десяти тысяч (особенно если число немного больше некоторой степени двойки) бывает удобно снова воспользоваться таблицей степеней двойки.
Например: 109610 = 1024 + 72 = 1024 + 64 + 8 = 100010010002.
Здесь мы представили число в виде суммы степеней двойки: сначала взяли максимально возможное значение, не превышающее исходное число (1024 < 1096), и нашли разность между исходным числом и этим значением (72). Затем выписали степень двойки, не превышающую эту разность, и т. д. Когда исходное число было представлено в виде суммы, мы построили его двоичное представление, записав 1 в разрядах, соответствующих слагаемым, вошедшим в сумму, и 0 — во всех остальных разрядах.
11.3. Перевод целого числа из системы счисления с основанием р в систему счисления с основанием q
Каждый из нас может выполнять арифметические операции в привычной десятичной системе счисления. Выполнять такие же операции в других системах счисления человеку непривычно, а поэтому и неудобно.
Для того чтобы перевести целое число из системы счисления с основанием р в систему счисления с основанием q, достаточно:
1) основание новой системы счисления выразить в исходной системе счисления и все последующие действия производить в исходной системе счисления;
2) последовательно выполнять деление данного числа и получаемых целых частных на основание новой системы счисления до тех пор, пока не получится частное, равное нулю;
3) полученные остатки, являющиеся цифрами числа в новой системе счисления, привести в соответствие алфавиту новой системы счисления;
4) составить число в новой системе счисления, записывая его, начиная с последнего остатка.
При необходимости перевести целое число из системы счисления с основанием р в систему счисления с основанием q можно попытаться воспользоваться описанным выше алгоритмом. Другой способ состоит в том, чтобы свести всё к хорошо знакомым действиям в десятичной системе счисления: перевести исходное число в десятичную систему счисления, после чего полученное десятичное число представить в требуемой системе счисления (рис. 3.3).

Рис. 3.3. Схема перевода целого числа из системы счисления с основанием р
в систему счисления с основанием q через десятичную систему счисления
Пример 5.
12345 = 1 • 53 + 2 • 52 + 3 • 51 + 4 • 50 = 19410 = 5226.
11.4. Перевод конечной десятичной дроби в систему счисления с основанием q
Для перевода конечной десятичной дроби в систему счисления с основанием q следует:
1) последовательно умножать данное число и получаемые дробные части произведения на основание новой системы счисления до тех пор, пока дробная часть произведения не станет равна нулю или не будет достигнута требуемая точность представления числа;
2) полученные целые части произведений, являющиеся цифрами числа в новой системе счисления, привести в соответствие алфавиту новой системы счисления;
3) составить дробную часть числа в новой системе счисления, начиная с целой части первого произведения.
Пример 6. Переведём число 0,187510 в двоичную систему счисления.
Выполним умножение числа 0,187510 на 2:

Здесь жирным выделены цифры, участвующие в двоичном представлении дроби, а в скобках указан номер цифры в дроби.
0,187510 = 0,00112.
11.5. «Быстрый» перевод чисел в компьютерных системах счисления
Из курса информатики основной школы вы знаете, что в компьютерных науках широко используются двоичная, восьмеричная и шестнадцатеричная системы счисления, благодаря чему их называют «компьютерными».
Между основаниями этих систем существует очевидная связь: 16 = 24, 8 = 23.
Способ «быстрого» перевода основан на том, что каждой цифре числа в системе счисления, основание которой q кратно степени двойки, соответствует число, состоящее из n (q = 2n) цифр в двоичной системе счисления. Замена восьмеричных цифр двоичными тройками (триадами) и шестнадцатеричных цифр двоичными четвёрками (тетрадами) позволяет осуществлять быстрый перевод между этими системами счисления, не прибегая к арифметическим операциям.

Для того чтобы целое двоичное число записать в системе счисления с основанием q = 2n, достаточно:
1) данное двоичное число разбить справа налево на группы по n цифр в каждой;
2) если в последней левой группе окажется меньше n разрядов, то её надо дополнить слева нулями до нужного числа разрядов;
3) рассмотреть каждую группу как n-разрядное двоичное число и записать её соответствующей цифрой системы счисления с основанием q = 2n.
Пример 7. Переведём число 110101001112 в восьмеричную систему счисления.
110101001112 — исходное число;
?11.010.100.111 — выделяем триады;
?011.010.100.111 — дополняем левую группу слева нулём;
?3.2.4.7 — выписываем восьмеричные цифры;
?32478 — результат.
Пример 8. Переведём число 16АС16 в двоичную систему счисления.
16АС16 — исходное число;
?0001.0110.1010.1100 — заменяем каждую цифру тетрадой;
?1.0110.1010.1100 — убираем слева незначащие нули;
?10110101011002 — результат.
Через двоичную систему счисления можно проводить быстрые переводы из восьмеричной системы счисления в шестнадцатеричную и обратно (рис. 3.4)

Рис. 3.4. Схема перевода целых чисел из восьмеричной системы счисления в шестнадцатеричную
и обратно через двоичную систему счисления
Пример 9. Выполним перевод восьмеричного 67 2528 числа в шестнадцатеричную систему счисления.
672528 — исходное число;
?110.111.010.101.010 — заменяем каждую цифру триадой;
?110.1110.1010.1010 — разбиваем двоичную строку справа налево на тетрады;
?0110.1110.1010.1010 — дополняем левую группу слева нулём;
?6.Е.А.А — выписываем шестнадцатеричные цифры;
?6ЕАА16 — результат.
Аналогичные алгоритмы быстрого перевода существуют и для дробных чисел. Для того чтобы записать правильную двоичную дробь в системе счисления с основанием q = 2n, достаточно:
1) двоичное число разбить слева направо на группы по n цифр в каждой;
2) если в последней правой группе окажется меньше n разрядов, то её надо дополнить справа нулями до нужного числа разрядов;
3) рассмотреть каждую группу как n-разрядное двоичное число и записать её соответствующей цифрой системы счисления с основанием q = 2n.
Пример 10. Число 0,1011000112 заменим равным ему шестнадцатеричным числом.
0,1011000112 — исходное число;
?0,1011.0001.1 — разбиваем двоичную строку слева направо на тетрады;
?0,1011.0001.1000 — дополняем правую группу справа нулями;
?0,В.1.8 — выписываем шестнадцатеричные цифры;
?0,В1816 — результат.
Попытайтесь самостоятельно сформулировать алгоритм быстрого перевода произвольного двоичного числа в восьмеричную систему счисления. Примените алгоритм к числу 11101001000,110100102.
Пример 11. Выясним, сколько значащих нулей в двоичной записи восьмеричного числа 16018.
Для ответа на этот вопрос достаточно знать двоичные триады, соответствующие восьмеричным цифрам от 0 до 7 и выполнить «быстрый» перевод числа 16018 в двоичную систему счисления:
16018 = 001 110 000 0012 = 11100000012.
В двоичной записи 6 значащих нулей, а первые два нуля являются незначащими и не учитываются.
Пример 12. Среди четырёхзначных шестнадцатеричных чисел, двоичная запись которых содержит ровно 7 единиц, найдём:
1) наименьшее число;
2) наибольшее число.
Наименьшее четырёхзначное шестнадцатеричное число — это 100016 = 0001 0000 0000 00002, и его двоичное представление содержит всего одну единицу. Чтобы получить наименьшее число, удовлетворяющее условию задачи, оставшиеся шесть единиц следует разместить в самых младших разрядах. Получим 1 0000 ОО11 11112 = 103F16. Чтобы получить наибольшее число, удовлетворяющее условию задачи, оставшиеся шесть единиц следует разместить в самых старших разрядах. Получим 1111 1110 0000 00002 = FE0016.
А сколько всего таких четырёхзначных шестнадцатеричных чисел, двоичная запись которых содержит ровно 7 единиц?
САМОЕ ГЛАВНОЕ
Для перевода целого десятичного числа в систему счисления с основанием q следует:
1) последовательно выполнять деление данного числа и получаемых целых частных на основание новой системы счисления до тех пор, пока не получится частное, равное нулю;
2) полученные остатки, являющиеся цифрами числа в новой системе счисления, привести в соответствие алфавиту новой системы счисления;
3) составить число в новой системе счисления, записывая его, начиная с последнего остатка.
В компьютерных науках широко используются двоичная, восьмеричная и шестнадцатеричная системы счисления, благодаря чему их называют «компьютерными». Между основаниями этих систем существует очевидная связь: 16 = 24, 8 = 23.
Если основание системы счисления q кратно степени двойки (q = 2n), то любое число в этой системе счисления можно «быстро» перевести в двоичную систему счисления, выписав последовательно двоичные коды каждой из цифр, образующих исходное число. Замена восьмеричных цифр двоичными тройками (триадами) и шестнадцатеричных цифр двоичными четвёрками (тетрадами) позволяет осуществлять быстрый перевод между этими системами счисления, не прибегая к арифметическим операциям.
Вопросы и задания
3. Переведите двоичные числа в восьмеричную систему счисления: 1) 1010001001011; 2) 1010,00100101.
4. Переведите двоичные числа в шестнадцатеричную систему счисления: 1) 1010001001011; 2) 1010,00100101.
5. Переведите числа в двоичную систему счисления: 1) 2668; 2) 26616.
6. Переведите числа из восьмеричной системы счисления в шестнадцатеричную: 1) 12754; 2) 1515.
7. Переведите числа из шестнадцатеричной системы счисления в восьмеричную: 1) 1АЕ2; 2) 1С1С.
8. Сравните числа: 1) 12516 и 1111000101012; 2) 7578 и 11100101012; 3) А2316 и 12328.
§ 10. Представление чисел в позиционных системах счисления
§ 11. Перевод чисел из одной позиционной системы счисления в другую
§ 12. Арифметические операции в позиционных системах счисления