Comment est une Valeur Hexadécimale manipulés au niveau du bit?
J'ai une compréhension de base des opérateurs au niveau du bit. Je suis à une perte de comprendre comment la valeur est affectée. Si quelqu'un peut me pointer dans la bonne direction, je serais très reconnaissant.
Mon Adresse Hexadécimale: 0xE0074000
La valeur Décimale: 3758571520
La Valeur Binaire: 11100000000001110100000000000000
Je suis en train de programmer un simple Micro-Contrôleur et utiliser le Registre d'accès de la Classe dans le Microsoft .Net Micro Framework pour faire le Contrôleur de faire ce que je veux faire.
Register T2IR = new Register(0xE0074000);
T2IR.Write(1 << 22);
Dans mon exemple ci-dessus, comment sont les bits de la représentation Binaire déplacé? Je ne comprends pas comment la gestion de bits est affecté à l'adresse sous forme Binaire.
Si quelqu'un peut me pointer dans la bonne direction, je serais très greatfull.
OriginalL'auteur Rusty Nail | 2012-06-10
Vous devez vous connecter pour publier un commentaire.
Oublier décimales pour un début. Vous y reviendrons plus tard.
Vous devez d'abord voir la logique entre HEXADÉCIMAL et en BINAIRE.
Bon, pour un octet, vous avez 8 bits (#7-0)
Quand vous lisez qu'en binaire, dans un octet, comme celui-ci %00001000
Puis l'ensemble de bits, est le 4ème à partir de la droite aka bits #3 qui a une valeur de 08 hex (en fait également décimal, mais encore oublier la virgule alors que vous comprendre hex/binaire)
Maintenant, si nous avons le nombre binaire %10000000
C'est le #7 bits qui est sur. Qui a une valeur hex de 0x80
De sorte que tous vous avez à faire est de les résumer en "amuse-gueules" (chaque partie de l'hex octet est appelé une lichette par certains geeks)
le maximum que vous pouvez obtenir dans un quartet est (décimal) de 15 ou F comme 0x10 + 0x20 + 0x40 + 0x80 = 0xF0 = binary %11110000
donc toutes les lumières allumées (4 bits) dans un nibble = F en hexadécimal (15 décimal)
en va de même pour le bas de grignoter.
Voyez-vous le motif?
Ainsi, si nous avions un tableau binaire de 1 et de 0 qui a une longueur de 32 bits et nous voulions faire passer de 8 bits par 1, pourrait nous venons de modifier une valeur? par exemple: bin[7] = 1; ??
pour aller plus loin, si nous voulions pour ce faire (8 << 3) serait-ce le droit: bin[7] = 1; bin[8] = 1; bin[9] = 1; ?
comment pourrions-nous le code ce: unité myBin = 000111001000; myBin = (8 << 1)?
Je pense que je sais d'où cette confusion. Dans la feuille de données, il parle à propos de la configuration des bits dans le registre (ce qui n'est pas vraiment le Décalage de Bits en tant que tel) C'est un Peu minipulation! Le Décalage de bits va modifier l'ensemble de l'Adresse Binaire comme je l'ai expliqué ci-dessus. Il y a des Classes qui peuvent changer chaque bit individuellement tout en continuant d'utiliser le Décalage de Bits techniques. Ses dans les Classes qui sont apportées les modifications! Pas dans le Bitshifting...
OriginalL'auteur BerggreenDK
Reportez-vous à @BerggreenDK de réponse pour ce un déplacement. Voici quelques infos sur ce que c'est que dans l'hex (même chose, juste représentation différente):
Le déplacement est un concept très simple à comprendre. Le registre est de taille fixe, et tout ce qui bits qui ne rentrent pas tombe de la fin. Alors, prenez cet exemple:
int num = 0xffff << 16;
Votre variable dans le sortilège serait maintenant
0xffff0000
. Notez comment la droite est rempli avec des zéros. Maintenant, passons à nouveau.num
est maintenant0x00ff0000
. Vous n'avez pas d'obtenir votre ancien bits. La même chose s'applique à droite changements.Astuce: à Gauche décalage par 1, c'est comme multiplier le nombre par 2, et à droite décalage par 1, c'est comme entier divisant le tout par 2.
Lien URL: s'Inscrire en Classe de Documentation Lien vers la documentation. Sa brève et ne pas me donner une réponse.
Ok, Une épiphanie, les Bits de valeur 1 dans le masque sont définies dans le registre. Les Bits de valeur 0 dans le masque ne sont pas modifiés. Nous avons donc besoin de travailler sur la valeur Binaire de définir, avant d'affecter la valeur du registre. Donc, si nous voulons mettre en 0010011(0)11 entre parenthèses puis nous avons besoin d'analyser un fichier binaire de 0100 pour définir ce BIT! Woohooo enfin!!!
Grand que vous avez trouvé la réponse. Veuillez cocher la bonne, afin que d'autres puissent lire cette question et de le retrouver rapidement. :o) + l'auteur de la bonne réponse gagne un peu de la réputation de bonus trop.
Rappelez-vous que, selon que vous souhaitez définir ou effacer les bits, vous devez utiliser le bon opérateur: OU régler le bit, ET pour effacer les bits, et XOR à bascule peu à peu.
OriginalL'auteur cyanic