Ciao,
Per il binario non hai niente di predefinito, dovrai scrivere una funzioncina che scriva eventualmente su un buffer (o a video) i bit di cui è composto il numero.
Te la cavi abbastanza semplicemente con qualcosa del genere (generico numero a 32bit con zeri iniziali, in caso tu voglia rimaneggiare il codice per gestire solo 8 bit, la cosa non è per niente complicata ed un utile esercizio):
unsigned int input
char output[32];
unsigned int bitmask=0x80000000;
int i=0;
while(bitmask>0){
char bit='0'+((input & bitmask)>>(31-i));
output[i++]=bit; //oppure stampa a video
bitmask>>=1;
}
NB: Ho scritto di getto ed è possibile che abbia inserito qualche imprecisione... in caso a te il piacere di scovarle. Il codice inoltre può essere migliorato sostituendo lo shift interno con un semplice test che controlla se il risultato è diverso da zero.
In alternativa puoi usare un approccio più "algebrico" e meno legato agli operatori binari. Puoi sfruttare l'operatore di modulo (%) per ottenere i resti di divisioni consecutive per 2. Con questo sistema devi però lavorare in maniera inversa, visto che otterrai per primi i bit meno significativi.
Qualcosa del genere:
int input;
char output[32];
int i=31;
while(input>0){
char bit='0'+(input%2);
output[i--]=bit;
input=input/2;
}
NB2 (Hint sulle imprecisioni): Gli array in output sono sufficienti a contenere l'output, ma non potresti utilizzarli, ad esempio, in una printf o una cout.
Ciaociao