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