Ciao!
In realtà ogni cifra è una potenza del 2. In particolare la cifra "più a destra" (LSB) vale 2^0, mentre quella "più a sinistra" (MSB) vale 2^(N-1), supponendo che il numero binario sia composto da N cifre.
Per cui semplicemente io farei un ciclo in cui, per ogni cifra, si calcola l'esatta potenza.
Qualcosa del tipo:
//Supponendo un numero binario a N cifre
totale = 0;
FOR (i=0; i<n; i=i+1) {
cifra = ottieni_la_cifra_i-esima();
IF (cifra != 0) {
totale = totale + ( 2^i );
}
}