Porque en Pascal "valor" es un booleano de verdad, y no me "traicionará" con algún otro número, de hecho el compilador ni lo permite si por error tratamos de asignar un valor fuera de rango.
Siento decírtelo, pero andas muy, muy confundido.
No conozco mucho pascal, pero si es como dices para Pascal "valor" no es un booleano de verdad, sino un 1 o un 0. Confundes el valor booleano con la representación en máquina. En todo caso quien traiciona a los lenguajes considerando que veradero es lo mismo que 1 eres tú.
Aunque en muchas notaciones se representa verdadero con un 1 y falso con un 0, no son 1 ni 0 a nivel aritmético, son verdadero y falso a nivel lógico.
Para más explicación, Inconexo lo ha descrito bastante arriba.
De todas formas, aunque no tienes la humildad de preguntarlo, ya que hecho de menos el lenguaje C y alguna gente agradece estas conversaciones, te planteo un ejemplo de cómo se hace en C lo que quieres.
No será exactamente lo que quieres, pero ilustra como usar los operadores a nivel de bits para guardar varios valores binarios en una variable.
El operador & compara cada bit de una palabra con el correspondiente de la otra. Por eso
flags & MASCARA_LUZ
será 0 (falso) si el segundo bit de flags es 1, y distinto de cero (verdadero) si no es así, independientemente del resto de bits de flags que se ven negados por los 0 de la máscara.
Ten en cuenta que la mayoría de drivers y microcontroladores se escriben en C, por lo tanto es cuanto menos inusual afirmar que C no está bien preparado para este tipo de tarea.
Para excusarme, no suelo memorizar este tipo de cosas, me basta con saber que se puede hacer y tener la idea general de cómo, cuando las necesito lo vuelvo a buscar o probar.
Para nada
(Puntos:2)( http://press.asqueados.net/ | Última bitácora: Jueves, 17 Abril de 2014, 09:50h )
Siento decírtelo, pero andas muy, muy confundido.
No conozco mucho pascal, pero si es como dices para Pascal "valor" no es un booleano de verdad, sino un 1 o un 0. Confundes el valor booleano con la representación en máquina. En todo caso quien traiciona a los lenguajes considerando que veradero es lo mismo que 1 eres tú.
Aunque en muchas notaciones se representa verdadero con un 1 y falso con un 0, no son 1 ni 0 a nivel aritmético, son verdadero y falso a nivel lógico.
Para más explicación, Inconexo lo ha descrito bastante arriba.
De todas formas, aunque no tienes la humildad de preguntarlo, ya que hecho de menos el lenguaje C y alguna gente agradece estas conversaciones, te planteo un ejemplo de cómo se hace en C lo que quieres. No será exactamente lo que quieres, pero ilustra como usar los operadores a nivel de bits para guardar varios valores binarios en una variable.
El operador & compara cada bit de una palabra con el correspondiente de la otra. Por eso será 0 (falso) si el segundo bit de flags es 1, y distinto de cero (verdadero) si no es así, independientemente del resto de bits de flags que se ven negados por los 0 de la máscara.
Ten en cuenta que la mayoría de drivers y microcontroladores se escriben en C, por lo tanto es cuanto menos inusual afirmar que C no está bien preparado para este tipo de tarea.
Envíos descartados por Mu [barrapunto.com]
Re:Para nada
(Puntos:2)( http://press.asqueados.net/ | Última bitácora: Jueves, 17 Abril de 2014, 09:50h )
Pongo todo el código por si queréis copiar: Para excusarme, no suelo memorizar este tipo de cosas, me basta con saber que se puede hacer y tener la idea general de cómo, cuando las necesito lo vuelvo a buscar o probar.
Envíos descartados por Mu [barrapunto.com]