Hombre, para pasar un numero de hexadecimal a binario...pasa el numero que tengas en hexadecimal a binario con la tabla de equivalencias que te dice bolo (1-9, A=10, B=11..., F=15), y luego hazte una funcion que te haga las divisiones entre 2 para sacar los binarios...no?
En fin la cosa en pseudocódigo que me sacaba de ocurrir sería algo asin:
si (numero>9) entonces
pasaradec() //te pasa el numero a decimal teniendo en cuenta que es una letra y eso...
//el numero en binario sería concatenar los restos de las divisiones
for (i=0; i<4; i++)
{
numerobin = numerobin^(numero mod 2);
numero = numero / 2;
}
numerobin = numerobin ^ numero;
//^ es el operador para concatenar cadenas, que no macuerdo como era el de c++
La cosa es ir dividiendo numero (tiene que ser un int) entre 2 como si pasaras de decimal a binario e irlo almacenando en numerobin (de tipo string o char[]) 3 veces e ir concatenandole el resto de las divisiones enteras...el ultimo digito (el de menor peso) lo obtienes concatenando el ultimo resultado de la division...
Amos, algo asin...espero haber ayudao
Edito: basicamente es + o - lo mismo que tienes tu hecho ahi...no mabia fijao bien en el código, sorry