codice:
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;

int main()
{ 
    int valore;
    cout<<"\nInserisci il numero da convertire: "<<endl;
    cin>>valore;
    cout<<"\nIl numero convertito in base 2 e': "<<endl;
    for (int j = 8*sizeof(int); j >= 0; j--)
       cout << (bool)(valore&((int)pow(2,j))); 
    cout << endl << endl; 
    system("pause");
    return 0;   
}
Trascura la pow, che altro non fa che ottenere tutte le potenze di 2 ...
Guarda la sizeof ...
(sizeof (int)*8) ti consente di ottenere il numero di bit ...
(sizeof restituisce il numero di byte)...
Prova con: int mask = pow(2,sizeof(int)*8);
Poi stampi un numero come carattere -_-" (0x30 -> 0, 0x31 -> 1)...