[C con Clase] condición if

Ferran Ferri ferranferri en gmail.com
Mar Sep 22 16:44:53 CEST 2009


Pues o no me lo he mirado bien o...

Si 0xff = 11111111 (o sea, 8 bits de 1).
Si aplicamos el & por bits y contamos que el array sea de tipo byte,
podriamos traducir:
if( (resp[1] & 0xff) != 0x00 )

Por
if (resp[1] != 0)

No es asi?
Ferran



2009/9/22 Pedro Rodríguez González <sr.whiteskull en hotmail.com>:
> sabemos que:
> 1 AND 1 = 1
> 0 AND 1 = 0
> 1 AND 0 = 0
> 0 AND 0 = 0
> http://www.conclase.net/c/curso/index.php?cap=018
>
> y tu ejemplo dice algo así, quizás más legible:
> if ((resp[1]>0x00) && (resp[1]<0xff)) // entonces "hay algo" y se trata de
> un caracter de 7 bits...
> Aunque realmente lo que hace la operación (resp[1] & 0xff) es que si el
> valor de resp[1] supera o es mayor a oxff (255 en decimal), entonces
> devolverá 0xff, es debido a que trabaja directamente con bits.
>
> ________________________________
> Date: Tue, 22 Sep 2009 14:32:03 +0200
> From: susanitis en gmail.com
> To: cconclase en listas.conclase.net
> Subject: [C con Clase] condición if
>
> la verdad es que no entiendo esta comparación que hace dentro del if :
>
> if( (resp[1] & 0xff) != 0x00 ) //donde resp es una cadena de caracteres
>
>   ¿cuando se cumplirá?. gracias
> ________________________________
> Get news, entertainment and everything you care about at Live.com. Check it
> out!
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>




Más información sobre la lista de distribución Cconclase