• # C'est l'extension de signe

    Posté par . En réponse au message hardcoder des octets. Évalué à 0.

    C'est le résultat de plusieurs phénomènes
    Le premier c'est l'extension de signe
    un char est signé donc le bit MSB indique que c'est positif ou négatif.
    Ainsi tout car supérieur à 0x7F est considéré comme négatif.
    Si le char en question est chargé dans un registre processeur alors le processeur procède à l'extension de signe sur tout les MSB jusuqu'a 32bits pour conserver la même représentation du chiffre négatif. (car un proc essaye toujours d'utiliser ces registres dans sont mode natif pour des raisons d'optimisation et qui sur les x86 est 32 bits)

    -1 sur 8 bits c'est 0xFF
    -1 sur 32bit c'est 0xFFFFFFFF

    Si tu travaillait en unsigned char tu aurais bien la même représentation en 8 bit qu'en 32bits de tes chiffres car les instructions assembleur utilisé serait ceux ne provoquant pas d'extension de signe.

    Le second phénomène c'est sans doute la méthodes que tu utilise pour obtenir ce que tu apelle le binaire en base 16 mais sans indication je ne peut pas expliquer ce qui se passe.