Pregunta

En primer lugar, permítanme dejar constancia de que esto es en preparación para el examen de mitad de período que tengo el miércoles.Estoy tomando un curso de programación en C y apenas hemos tocado las operaciones bit a bit, pero nos están probando.

Por ejemplo, se supone que debemos saber algo como cómo se inicializan A, B, C y D en un código como este:

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

Si es posible, ¿podría proporcionarme un tutorial/guía decente para comprender estos conceptos?Una explicación también sería fantástica, pero preferiría que no me dieran una explicación de respuesta real.

Gracias de antemano por cualquier ayuda que me puedan brindar.

¿Fue útil?

Solución

La primera cuestión es:

  • reconoces & como bit a bit Y, | como bit a bit O, ^ como XOR bit a bit, y ~ como bit a bit NO?

Si no, tienes uno o dos problemas y necesitas llegar al punto de reconocerlos todos.

Entonces necesitas saber qué significa cada operación...

  • Para una posición de bit determinada, si ambos bits están 1, entonces b1 & b2 será 1;de lo contrario, será 0.
  • Para una posición de bit determinada, si ambos bits están 0, entonces b1 | b2 será 0;de lo contrario, será 1.
  • Para una posición de bit determinada, si los dos bits son iguales (ambos 0 o ambos 1), entonces b1 ^ b2 será 0;de lo contrario será 1.
  • Para una posición de bit determinada, si el bit está 0, ~b1 será 1;de lo contrario, será 0.

También es necesario reconocer que la representación hexadecimal está estrechamente relacionada con los patrones de bits del número.

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

Combinando estos, puede deducir las respuestas a las preguntas mostradas, aplicando los operadores bit a bit a cada bit de los operandos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top