Déjà y'a un problème avec la variable 'binaire'. Tu veux que ce soit une chaîne de caractère non ? Là si c'est un char, c'est UN SEUL caractère. Il faut en faire un tableau de char, que je te conseille de mettre sous la forme de char*.
Ensuite quand tu fais 'binaire = str(nb%2) + binaire' tu oublies justement que tu travailles avec une variable de type 'char'. Un char c'est rien d'autre qu'un nombre entier en fait qui représente le code ASCII d'un caractère. Quand tu additionnes deux char, tu additionnes deux codes ASCII. Le code ASCII de '0' vaut 48, donc si tu additionnes (en char, donc) '0' + '0' tu obtiens 48+48 = 96, soit le code ASCII du caractère ' ` '.
Je réfléchis un peu et je te donne une structure de code qui devrait fonctionner mieux.