Question

Tout d’abord, permettez-moi simplement de préciser que ce projet est en préparation pour un examen de mi-mandat que j’aurai mercredi.Je suis un cours de programmation C et nous avons à peine touché aux opérations au niveau des bits, mais nous sommes testés sur celles-ci.

Par exemple, nous sommes censés savoir quelque chose comme comment A, B, C et D sont initialisés dans un code comme celui-ci :

unsigned int A, B, C, D;
A = 0xfedc & 0x300c;
B = 0xba98 | 0x1236;
C = 0x7654 ^ 0xfa00;
D = ~0xffff3210;

Si possible, pourriez-vous me fournir un tutoriel/guide décent pour comprendre ces concepts ?Une explication serait géniale aussi, mais je préférerais ne pas recevoir d'explication de réponse réelle.

Merci d'avance pour toute aide que vous pourrez m'apporter.

Était-ce utile?

La solution

Le premier problème est :

  • Reconnaîs-tu & comme ET au niveau du bit, | comme OU au niveau du bit, ^ comme XOR au niveau du bit, et ~ comme au niveau du bit NON ?

Sinon, vous avez un ou deux problèmes et vous devez les reconnaître tous.

Ensuite, il faut savoir ce que signifie chaque opération...

  • Pour une position de bit donnée, si les deux bits sont 1, alors b1 & b2 sera 1;sinon, ce sera 0.
  • Pour une position de bit donnée, si les deux bits sont 0, alors b1 | b2 sera 0;sinon, ce sera 1.
  • Pour une position de bit donnée, si les deux bits sont identiques (les deux 0 ou les deux 1), alors b1 ^ b2 sera 0;sinon ce sera 1.
  • Pour une position de bit donnée, si le bit est 0, ~b1 sera 1;sinon, ce sera 0.

Vous devez également reconnaître que la représentation hexadécimale est étroitement liée aux modèles de bits du nombre.

  • 0x0 ⟶ 00002
  • 0x1 ⟶ 00012
  • ...
  • 0xE ⟶ 11102
  • 0xF ⟶ 11112

En les combinant, vous pouvez déduire les réponses aux questions affichées, en appliquant les opérateurs au niveau du bit à chaque bit des opérandes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top