Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda en fragmento de código

Estas en el tema de Duda en fragmento de código en el foro de C/C++ en Foros del Web. Buenos días, soy Ángel y me gustaría que me ayudáseis con respecto a unas dudas que me han surgido en el lenguaje C. Dispongo la ...
  #1 (permalink)  
Antiguo 20/01/2016, 05:03
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Duda en fragmento de código

Buenos días, soy Ángel y me gustaría que me ayudáseis con respecto a unas dudas que me han surgido en el lenguaje C.

Dispongo la siguiente cadena:
char obuf[261];
Posteriormente realizo la siguientes asignaciónes:
obuf[8] = reg_no >> 8;
obuf[9] = reg_no & 0xff;
obuf[10] = num_regs >> 8;
obuf[11] = num_regs & 0xff;
Después dispongo del siguiente condicional:
if (ibuf[7] & 0x80)

Bien, me gustaría saber si alguien me puede explicar qué significa lo que he marcado en rojo, ya que es la primera vez que lo veo y no lo entiendo.

Muchas gracias por adelantado.

Un saludo!
  #2 (permalink)  
Antiguo 20/01/2016, 05:38
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 7
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Duda en fragmento de código

Minutos después de hacer la pregunta he encontrado la soluciona a mism dudas.

Las explico por si a alguien le sirve de ayuda:

2 & 0xff --> 0000000000000010 & 0000000011111111 = 0000000000000010
Básicamente se queda con los 8 bits menos significativos del dato.

El comando << y >> rota tantos bits como indiquen a la izquierda o a la derecha.

Un saludo!
  #3 (permalink)  
Antiguo 20/01/2016, 05:54
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Duda en fragmento de código

Cita:
Iniciado por angelminga Ver Mensaje
Minutos después de hacer la pregunta he encontrado la soluciona a mism dudas.

Las explico por si a alguien le sirve de ayuda
Un par de detalles sobre la respuesta que has publicado:

1. El operador & realiza una operación AND binaria. Esto es, compara cada pareja de bits y si ambos son 1 el resultado final será 1, en cualquier otro caso el resultado será 0.

Otros operadores binarios similares son:
  • '|' que realiza una operación OR binaria
  • '^' para realizar operaciones XOR
  • '~' calcula el complementario; convierte '1' en '0' y '0' en '1'
2. los operadores << y >> no realizan una rotación sino un desplazamiento.

Una rotación implicaría que el dígito que sale por uno de los laterales vuelve a entrar por el otro (como si fuese una rueda). Sin embargo estos operadores desplazan los bits... si un bit se sale por un lateral se habrá perdido su valor para siempre.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: char, fragmento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:12.