>>496さんありがとうございます.
2の11乗を求めるプログラムはこれであってますよね。
符合なし整数にしてますが。

#include <stdio.h>

unsigned int uint_power(unsigned int a, unsigned int b );

int main()
{
unsigned int i;
i = 11 ;

printf( "%d\n", uint_power( 2, i ));
return 0 ;
}

unsigned int uint_power(unsigned int a, unsigned int b){

if (b == 0) return 1;

if (b % 2 == 0) return uint_power(a * a, b / 2);

else return a * uint_power(a * a, (b - 1) / 2);

}