16桁の2進数を入力して、10進数に変換して
出力するプログラムを書いたのですが(とりあえずエラー処理は無しで)
コンパイル時に「不正な左オペランド%です」というエラーが出ます。
下から順にi+1番目の桁の値を取得し、2^iをかけたものを足し合わせているのですが…
原因をと対策を教えてください。お願いします

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

void main(void){
 int n, i, sum=0;

 cin >> n;

 for(i=0; i<16; i++)
  sum = sum + ( ( n / pow(10,i) ) % 10 ) * pow(2,i);
 
  cout << sum;
}