codice:
#include <stdio.h>
#include <math.h>
#define nbit 8

int main(){
    int varX=-1;
    int varY;
    int varBinary[nbit];
    int counter;
    int isNegative=0;
    if(varX<0){
        isNegative=1;
        varX=-varX;
    } else isNegative=0;
    varBinary[0]=0;
    for (varY=(((int)pow(2,nbit-1))-1),counter=1; varY!=0; varY>>=1,counter++){
        varBinary[counter] = (varX & varY ? 1 : 0);
    }
    int oneFound=0;
    if(isNegative){
        for(counter=nbit-1;counter>=0;counter--){
            if(!oneFound){
                if(varBinary[counter]==1) oneFound=1;
            } else {
                varBinary[counter]=!varBinary[counter];
            }
        }
    }
    printf("\n---\n");
    for (counter=0; counter<nbit; counter++){
        printf("%d",varBinary[counter]);
    }
    printf("\n---\n");
}
mi si presentano codifiche errate per valori come

-1
-127

ed entrambi vengono codificati allo stesso modo

- se il numero è negativo metto ad 1 una variabile int, in pratica la uso come booleana
- il numero se negativo lo tratto come modulo e codifico come sempre
- se il numero è negativo procedo da destra a sinistra e trovato il primo 1 inverto tutte le cifre che trovo a seguire


non mi codifica bene neanche -128