Задача № 270
Чему равно значение выражения в системе счисления с основанием 16?
\( 1101{,}01_2 + 24{,}6_8 \)
В ответе укажите только число, основание системы счисления указывать не нужно.
Решение
Решение на Python
def frac_to_dec(frac, base):
# Эта функция переводит дробную часть числа из системы счисления с основанием base в десятичную
# Например, '0.1' в двоичной дроби это 1/2, а '0.4' в восьмеричной дроби это 4/8
# enumerate даёт номер позиции e и сам символ num
# int(num) * base ** -(e+1) — находит значение каждого разряда дробной части в 10-ичной записи
return sum(int(num) * base ** -(e + 1) for e, num in enumerate(frac))
# '1101' в двоичной — это 13 в десятичной,
# frac_to_dec('01', 2) — это 1/4, то есть 0.25
# Значит, a = 13 + 0.25 = 13.25
a = int('1101', 2) + frac_to_dec('01', 2)
# '24' в восьмеричной — это 20 в десятичной,
# frac_to_dec('6', 8) — это 6/8 = 0.75
# Значит, b = 20 + 0.75 = 20.75
b = int('24', 8) + frac_to_dec('6', 8)
# Складываем a и b: 13.25 + 20.75 = 34
# int(34) = 34, hex(34) = 0x22
# Выводит '0x22'
print(hex(int(a + b)))
Аналитическое решение
Шаг 1. Переведём числа в десятичную систему счисления:
\( 1101_2 = 13_{10} \)
\( \displaystyle 0{,}01_2 = \left( \frac{1}{4} \right )_{10} \)
\( 24_8 = 20_{10} \)
\( \displaystyle 0{,}6_8 = \left( \frac{6}{8} \right )_{10} = \left( \frac{3}{4} \right )_{10} \)
Шаг 2. Вычислим сумму в десятичной системе счисления:
\( \displaystyle 13 + \frac{1}{4} + 20 + \frac{3}{4} = 34 \)
Шаг 3. Результат переведём в шестнадцатеричную систему счисления:
\( 34_{10} = 32_{10} + 2_{10} = 20_{16} + 2_{16} = 22_{16} \)
Шаг 4. Запишем ответ: 22.