Ma a dire il vero se il codice è proprio quello (vabbè con main() e tutto il resto) mi meraviglio del fatto stesso che il compilatore te lo lasci compilare senza segnalarti almeno qualche warning... ammesso che davvero non lo faccia!
Tanto per cominciare, scrivere '/0' e '/1' è scorretto: gli apici si usano con un singolo carattere (o al massimo con un carattere preceduto da '\') ma quello è sbagliato e giustamente il compilatore ti dice
warning: multi-character character constant
che poi che senso hanno quei / ? Al massimo potresti scrivere '\0' e '\1', cioè in questo modo indichi che ciò che segue il simbolo \ non è un carattere ma un valore numerico, ma a questo punto perché non ricorrere ad un array di interi?
Inoltre, a parte una serie di altre piccole cose (come "unsogned" al posto di "unsigned") cosa significa questo:
d=<<(8-i); ( confuso forse con d <<= (8-i) ? )
e questo?
fprintf(out,"%b",c);
che è quel %b?
Ti consiglio di rivedere un po' il codice![]()