Originariamente inviato da bucciula
//in questo modo lo fai diventare positivo??
putchar('-');
inputN=-inputN;
Sì, e stampo sullo schermo un meno. In questa maniera il programma funziona correttamente anche con i numeri negativi.
for(counter=sizeof(inputN)*8;counter;counter--) // nn capisco perchè moltiplichi per 8
sizeof(inputN) mi dà le dimensioni della variabile inputN (che possono variare a seconda del compilatore e della piattaforma su cui compilo il programma) in byte, e ciascun byte contiene 8 bit*; così quindi ottengo il numero totale di bit e parto a ciclare da quello più significativo, andando verso il meno significativo.
if(inputN&(1<<(counter-1))) //anche questo non lo capisco
In questa maniera verifico se il counter-1-esimo bit del numero è impostato o meno. Ripassati eventualmente il significato dell'operatore <<, dell'operatore & e come funziona il sistema binario.

* in realtà ad essere pignoli secondo lo standard sizeof restituisce le dimensioni dei tipi in char (che non sarebbero necessariamente byte), e un byte non è necessariamente 8 bit, ma salvo rarissimissimissimissimissime eccezioni 1 char = 1 byte = 8 bit.

P.S.: quando inserisci del codice nel messaggio usa i tag [code] ... [/code].