signe étendre le numéro de complément de 1 bit 2?

Je suis un étudiant et j’écris une fonction en C pour signer l’extension d’un champ de bits donné. Je travaille avec 32 bits.

J’ai cherché cette réponse sur Google mais je n’ai pas trouvé ce que je cherchais.

J’écris une fonction qui retourne la représentation complète de deux d’un ou plusieurs bits consécutifs tirés d’un 32 int. Le bit le plus à gauche est le bit de signe.

Qu’est-ce que je retourne si je tire un seul bit? Comment représentez-vous un bit en tant que numéro de complément signé par deux?

    Cela n’a pas beaucoup de sens de parler un nombre complément à 1 bit. Si vous avez seulement 1 bit, c’est 0 ou 1.

    En général, si vous avez un nombre de complément à deux avec N bits, la plus haute valeur exprimable est 2^(N-1)-1 et la valeur la plus basse est -2^(N-1) . Si nous voulons être stupides, nous pouvons appliquer cela à N = 1 et nous constatons que le nombre de complément à 1 bit sur deux peut aller de -1 à 0.

    Edit: Vous avez écrit:

    J’écris une fonction qui retourne la représentation complète de deux d’un ou plusieurs bits consécutifs tirés d’un 32 int. Le bit le plus à gauche est le bit de signe.

    Je ne pense pas que cela soit bien défini. Le complément à deux est un codage qui vous permet de représenter un entier mathématique sous la forme d’une série de bits. Étant donné un entier, il vous indique les bits à stocker. Je ne sais pas ce que serait la représentation en complément à deux d’une série de bits. C’est comme si vous me demandiez de vous donner l’encodage ASCII d’une série d’octets arbitraires, ou que vous me demandiez de traduire l’adresse de Gettysburg du français en anglais.

    Si je comprends bien, vous voulez extraire N bits arbitraires (N> = 1 & <= 32) d'un flux de bits dans une variable de 32 bits et les représenter sous la forme d'un nombre complément à 2 (renvoyant vraisemblablement ce nombre sous la forme d'une signature 32 ).

    Cela signifie que vous prenez les bits sélectionnés, que vous les placez à l’extrémité inférieure d’une variable de travail, puis que vous “prolongez” le bit sélectionné le plus à gauche en le propageant (en le copiant) à gauche bits (précédemment non définis) dans la variable de travail. Cela peut être fait comme un seul algorithme cohérent, sans avoir besoin de mettre en cas particulier une valeur particulière de N.

    Pour deux bits, les valeurs possibles 1, 0, -1 et -2 seront produites (pour les modèles de bits 01, 00, 11 et 10 respectivement). Pour un bit, il produira les valeurs possibles 0 et -1 (pour les modèles de bits 0 et 1 respectivement).