Приветствуем вас на нашем очередном уроке по программированию на языке C++. Сегодня мы рассмотрим важную тему — конвертация чисел из двоичной системы счисления в десятичную и наоборот. Эта тема особенно актуальна для тех, кто хочет глубже понять внутреннее устройство компьютера и работу с данными на низком уровне.

Внимание! Это урок для более продвинутых треубщий знаний функций, циклов и условий, которые мы рассмотрим в следующих уроках.

Что такое двоичная система счисления?

Двоичная система счисления — это система, основанная на двух цифрах: 0 и 1. Каждая позиция в числе представляет собой степень двойки, начиная с 2^0 справа налево. Например, число 1010 в двоичной системе эквивалентно 10 в десятичной системе:

  • 1 * 2^3 = 8
  • 0 * 2^2 = 0
  • 1 * 2^1 = 2
  • 0 * 2^0 = 0

Итак, 8 + 0 + 2 + 0 = 10.

Конвертация из двоичной системы в десятичную

Чтобы конвертировать число из двоичной системы в десятичную, необходимо умножить каждую цифру двоичного числа на соответствующую степень двойки и затем сложить все результаты. Рассмотрим пример:


  int binaryToDecimal(string binary) {
      int decimal = 0;
      int base = 1; // 2^0
      int length = binary.length();
      
      for (int i = length - 1; i >= 0; i--) {
          if (binary[i] == '1') {
              decimal += base;
          }
          base = base * 2;
      }
      return decimal;
  }
  

В этом коде строка binary анализируется с конца, и для каждой ‘1’ добавляется соответствующая степень двойки к итоговому значению decimal.

Конвертация из десятичной системы в двоичную

Чтобы конвертировать число из десятичной системы в двоичную, необходимо делить число на 2 и записывать остатки до тех пор, пока число не станет равно нулю. Остатки, записанные в обратном порядке, дадут двоичное представление числа. Рассмотрим пример:


  string decimalToBinary(int decimal) {
      string binary = "";
      while (decimal > 0) {
          binary = (decimal % 2 == 0 ? "0" : "1") + binary;
          decimal = decimal / 2;
      }
      return binary;
  }
  

В этом коде остаток от деления на 2 добавляется в начало строки binary, что и формирует двоичное представление числа.

Примеры использования

Теперь давайте рассмотрим несколько примеров использования наших функций:


  int main() {
      string binaryNumber = "1010";
      int decimalNumber = 10;
      
      cout << "Binary to Decimal:" << endl;
      cout << "Binary: " << binaryNumber << " = Decimal: " << binaryToDecimal(binaryNumber) << endl;
      
      cout << "Decimal to Binary:" << endl;
      cout << "Decimal: " << decimalNumber << " = Binary: " << decimalToBinary(decimalNumber) << endl;
      
      return 0;
  }
  

Эти примеры покажут, как происходит конвертация и помогут закрепить материал.

Задание для самостоятельной работы

Для закрепления материала, предлагаем вам выполнить следующие задания:

Задание 1: Конвертация из двоичной системы в десятичную

Напишите функцию, которая принимает строку, представляющую двоичное число, и возвращает его десятичное значение. Протестируйте вашу функцию на следующих примерах:

  • Входное значение: "1101", Ожидаемый результат: 13
  • Входное значение: "101010", Ожидаемый результат: 42
  • Входное значение: "11111111", Ожидаемый результат: 255

Задание 2: Конвертация из десятичной системы в двоичную

Напишите функцию, которая принимает десятичное число и возвращает строку, представляющую его двоичное значение. Протестируйте вашу функцию на следующих примерах:

  • Входное значение: 13, Ожидаемый результат: "1101"
  • Входное значение: 42, Ожидаемый результат: "101010"
  • Входное значение: 255, Ожидаемый результат: "11111111"

Задание 3: Интеграция функций

Напишите программу, которая использует обе функции из заданий 1 и 2 для конвертации числа из двоичной системы в десятичную и обратно. Протестируйте программу на следующих примерах:

  • Входное значение: "1101" (двоичное), Ожидаемый результат: "1101" (после конвертации туда и обратно)
  • Входное значение: 42 (десятичное), Ожидаемый результат: 42 (после конвертации туда и обратно)

Удачи в выполнении заданий! Ждем ваши решения на следующем уроке.

Заключение

В этом уроке мы узнали, как конвертировать числа из двоичной системы в десятичную и наоборот. Это базовые навыки, которые пригодятся в работе с низкоуровневыми данными и понимании внутренней структуры компьютера. Надеемся, что этот урок был полезен и поможет вам в дальнейшем изучении C++.

Перейти к следующему уроку →