Monkey Place

Перевод из любой системы счисления в любую на C++

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

Перевод из десятичной системы счисления в другую

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

Перевод в двоичную систему счисления

Для перевода десятичного числа в двоичную систему счисления можно использовать функцию bitset<размер>. Размер - это количество бит, которые будут занимать двоичное число. Например, bitset<8> создаст объект, который будет занимать 8 бит.

#include <bitset>
#include <iostream>

using namespace std;

int main()
{
    int dec = 19; // десятичное число

    // перевод в двоичную систему счисления
    bitset<8> bin(dec);
    cout << "Десятичное число " << dec << " в двоичной системе счисления: " << bin << endl;

    return 0;
}

Перевод в восьмеричную систему счисления

Для перевода десятичного числа в восьмеричную систему счисления можно воспользоваться функцией oct. Эта функция принимает на вход десятичное число и возвращает его представление в восьмеричной системе счисления в виде строки.

#include <iostream>

using namespace std;

int main()
{
    int dec = 19; // десятичное число

    // перевод в восьмеричную систему счисления
    cout << "Десятичное число " << dec << " в восьмеричной системе счисления: " << oct << dec << endl;

    return 0;
}

Перевод в шестнадцатеричную систему счисления

Для перевода десятичного числа в шестнадцатеричную систему счисления можно воспользоваться функцией hex. Эта функция принимает на вход десятичное число и возвращает его представление в шестнадцатеричной системе счисления в виде строки.

#include <iostream>

using namespace std;

int main()
{
    int dec = 19; // десятичное число

    // перевод в шестнадцатеричную систему счисления
    cout << "Десятичное число " << dec << " в шестнадцатеричной системе счисления: " << hex << dec << endl;

    return 0;
}

Перевод из любой системы счисления в десятичную

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

#include <iostream>
#include <cmath> // для функции pow

using namespace std;

int main()
{
    int number = 1010; // число в двоичной системе счисления
    int base = 2; // основание системы счисления
    int power = 0;
    int decimal = 0;

    // перевод в десятичную систему счисления
    while (number != 0) {
        decimal += (number % 10) * pow(base, power);
        ++power;
        number /= 10;
    }

    cout << "Число в десятичной системе счисления: " << decimal << endl;

    return 0;
}

Перевод из одной системы счисления в другую

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

#include <iostream>
#include <cmath> // для функции pow

using namespace std;

int main()
{
    int number = 19; // десятичное число
    int from_base = 10; // исходная система счисления
    int to_base = 2; // целевая система счисления
    int power = 0;
    int result = 0;

    // перевод в целевую систему счисления
    while (number != 0) {
        result += (number % to_base) * pow(from_base, power);
        ++power;
        number /= to_base;
    }

    cout << "Число " << number << " в системе счисления " << from_base << " в системе счисления " << to_base << ": " << result << endl;

    return 0;
}

Заключение

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