Задача № 286
Чему равно значение выражения в системе счисления с основанием 16?
\( 1010{,}1_2 + 11{,}4_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))
# '1010' в двоичной — это 10 в десятичной,
# frac_to_dec('1', 2) — это 1/2, то есть 0.5
# Значит, a = 10 + 0.5 = 10.5
a = int('1010', 2) + frac_to_dec('1', 2)
# '11' в восьмеричной — это 9 в десятичной,
# frac_to_dec('4', 8) — это 4/8 = 0.5
# Значит, b = 9 + 0.5 = 9.5
b = int('11', 8) + frac_to_dec('4', 8)
# Складываем a и b: 10.5 + 9.5 = 20
# int(20) = 20, hex(20) = 0x14
# Выводит '0x14'
print(hex(int(a + b)))
Аналитическое решение
Шаг 1. Переведём числа в десятичную систему счисления:
\( 1010_2 = 10_{10} \)
\( \displaystyle 0{,}1_2 = \left( \frac{1}{2} \right )_{10} \)
\( 11_8 = 9_{10} \)
\( \displaystyle 0{,}4_8 = \left( \frac{4}{8} \right )_{10} = \left( \frac{1}{2} \right )_{10} \)
Шаг 2. Вычислим сумму в десятичной системе счисления:
\( \displaystyle 10 + \frac{1}{2} + 9 + \frac{1}{2} = 20 \)
Шаг 3. Результат переведём в шестнадцатеричную систему счисления:
\( 20_{10} = 16_{10} + 4_{10} = 10_{16} + 4_{16} = 14_{16} \)
Шаг 4. Запишем ответ: 14.