Signer étendre 9 bits en C
Nous allons apprendre à étendre la signature d’un entier 9 bits en C dans ce tutoriel. Tout d’abord, nous devons savoir exactement quelle est l’extension du signe.
Qu’est-ce que l’extension de signe
L’extension de signe fait référence à l’extension d’un nombre tout en conservant son bit de signe, par exemple en passant de 32 bits à 64 bits. Le bit de signe est toujours le plus élevé dans les formes numériques utilisées aujourd’hui.
Ce n’est qu’une question de tradition, mais à notre connaissance, c’est toujours le cas. Cela indique que nous devons déplacer la partie du nombre le plus critique vers la nouvelle place la plus élevée tout en maintenant l’intégrité des autres parties du nombre.
Signer étendre un entier 9 bits en C
Certains opérateurs au niveau du bit du langage de programmation C fonctionnent au niveau matériel. Cependant, pour utiliser ces opérateurs, il est nécessaire de comprendre l’architecture de la mémoire et comment C enregistre les données dans la mémoire.
Structure:
- La mémoire est divisée en 1 octet pour chaque caractère de type
char
. - La structure mémoire d’un type
int
est constituée de 4 octets. - Un emplacement mémoire de type
short
est composé de 2 octets.
Les informations concernant le panneau se trouvent dans la partie la plus à gauche. Le chiffre 1 indique un nombre négatif, tandis que le chiffre 0 représente un nombre positif.
Regardons l’exemple suivant pour mieux comprendre ce qui est discuté.
Pour commencer, dans la classe main()
, nous allons créer une variable de type short
et lui donner le nom val
. Nous affecterons ensuite la variable de la même manière que ci-dessous.
short val = 234;
Après cela, nous fournirons la valeur short
que nous avons créée avec un nombre de 9 bits à la variable appelée res
.
int res = val & 0b0000000111111111;
Une vérification if
est appliquée. Cela vérifie si le bit de signe, qui est le bit le plus élevé que vous conservez (0x100)
, est défini, et si c’est le cas, il met tous les bits qui le suivent.
if (val & 0x100) {
res = res | 0xFE00;
}
Explication:
Nous avons fait une variable val
, un petit entier de 16 bits en mémoire. L’opérateur &
a ensuite été utilisé pour masquer les 9 bits les plus récents.
Il s’agit de l’opérateur AND
utilisé dans les opérations au niveau du bit, et son processus est décrit ci-dessous.
X Y res
0 0 0
0 1 0
1 0 0
1 1 1
-
Le
res
représente le résultat, tandis queX
etY
représentent les nombreuses options de saisie. Le calcul se fait petit à petit.Il ne produira un 1 que si les deux bits avec la même valeur significative sont 1.
-
Par conséquent, nous pouvons séparer les 9 derniers bits de la valeur de l’opérateur
AND
au niveau du bit, et le reste des bits sera mis à 0. La valeur0b0000000111111111
correspond à la représentation binaire.Cela démontre que seuls les 9 bits les plus récents contiennent 1, tandis que le reste contient un 0. La variable
res
sera mise à jour avec le résultat. -
Après cela, nous avons utilisé une vérification
if
pour vérifier le premier bit. Si c’était 1, nous l’avons ajouté au résultat. Sinon, nous l’avons laissé à 0.
Pour cela, nous avons de nouveau utilisé l’opérateur bit à bit AND
et, cette fois, nous n’avons extrait que le premier bit, et si la réponse est 1, nous avons alors utilisé le |
, qui est l’opérateur OR
au niveau du bit et fonctionne comme suit.
X Y res
0 0 0
0 1 1
1 0 1
1 1 1
-
Le
res
est la sortie, etX
etY
sont les possibilités d’entrée. Il est calculé au fur et à mesure.Il ne sort 0 que si le même bit significatif est 0. Dans l’instruction
if
, le résultat de cet opérateur est évalué.Si
true
, l’opérateur “OU” au niveau du bit est utilisé pour insérer 1 dans le bit le plus à gauche du résultat. -
0xFE00
est la représentation hexadécimale du nombre binaire, et il est utilisé pour définir les bits au-dessus s’il y a un bit de signe présent.
En utilisant l’opérateur au niveau du bit en C, nous pouvons effectuer une variété d’autres choses. Il y a beaucoup plus d’opérateurs au niveau du bit en C que “ET” au niveau du bit et “OU” au niveau du bit.
Il y a XOR
au niveau du bit représenté par un symbole ^
. Le symbole ~
représente un opérateur NON
au niveau du bit.
Le signe >>
désigne un opérateur de décalage vers la gauche. Vous pouvez effectuer le décalage vers la droite en utilisant le symbole <<
.
Vous pouvez faire cela ou tout autre travail souhaité de différentes manières avec l’aide de ces opérateurs.
Code source complet :
#include <stdio.h>
int main() {
short val = 234;
int res = val & 0b0000000111111111;
if (val & 0x100) {
res = res | 0xFE00;
}
return 0;
}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn