не могу понять, почему неправильно переводит

Недавно начал учить с++, хорошо знаю php, но хочу научиться геймдеву.

Есть задача Напишите программу, которая вводит двоичную запись целого числа х (от 0 до 30), и выводит это число на экран в десятичной системе счисления.

Я вроде реализовал на с++, но почему-то неправильно работает(введите 10, ответ должен быть 2, а у меня 1) Совсем запутался с с++ этим)) Заранее спасибо

#include<iostream>
#include <math.h>

using namespace std;

int main()
{
    int num = 0, l = 0, t = 1, ch = 0, res = 0;
    cout << "Введите число в двоичной системе:" << endl;
    cin >> num; //вводим число с клавиатуры
    l = to_string(num).length();
   
    for (int i = 0; i < l; i++)
    {
        ch = ((num / t) % 10) * pow(i , 2);
        res += ch;
        t *= 10;
    }

    if (res > 0 && res < 30) //проверяем, находится ли заданного число в указанном интервале
    { 
        cout << res;
    }
    else
    {
        cout << "Введите число от 0 до 30" << endl;
    }
}

Ответы (1 шт):

Автор решения: Jeckerson

Просто нужно не i в вторую степень возводить, а наоборот 2 в iтую степень) Да, совсем не заметил. Спасибо огромное

→ Ссылка