Autor Tema: duda:como negar bit;  (Leído 8039 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
duda:como negar bit;
« en: 14 de Febrero de 2010, 20:47:18 »
Hola camaradas
Tengo una consulta que es si hay otro metodo para negar una variable del tipo booleana
Tengo el compilador de hi-tech intente hacer :
Código: C
  1. static bit led;
  2.  ~led;//esto no ,aparentemente funciona solo para bytes
  3.  !led;//esto tampoco ,se utiliza para control de programas pero probé y nada
  4.  led=!led;//solo esto me funciona
saludos
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: duda:como negar bit;
« Respuesta #1 en: 14 de Febrero de 2010, 20:49:20 »
Seguramente esto también funciona:

Código: C
  1. led=~led;



Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: duda:como negar bit;
« Respuesta #2 en: 14 de Febrero de 2010, 21:54:23 »
Habiendo declarado "led" como bit podes hacerlo de cualquier forma:
led=!led;
led=~led;

y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: duda:como negar bit;
« Respuesta #3 en: 14 de Febrero de 2010, 22:11:44 »
También se puede hacer una or exclusiva con 1. Si la variable estaba en 0 pasa a 1 y si estaba en 1 pasa a 0 por lo tanto serviría.

led ^= 1;
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: duda:como negar bit;
« Respuesta #4 en: 14 de Febrero de 2010, 23:38:44 »
Hola muchachos gracias por las ideas ingeniosas
Probe:
led=~led;
led++;

Y me sale esto en el compilador:

Error[203] D:\electronica\prog\C\containera\valves&analog\valveOLD\togle.c 28 : illegal operation on bit variable

es como que solo puede ser utilizado para bytes o int ,etc no mas.

En efecto es como lo comenta angelGris ,queda compilando para las opciones

led=!led;
Y
led^=1;
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: duda:como negar bit;
« Respuesta #5 en: 15 de Febrero de 2010, 13:54:36 »
y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!

Hola Gera, yo hace tiempo usé ese método en CCS y funciona. Parece que en hitech no según Manutek.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: duda:como negar bit;
« Respuesta #6 en: 15 de Febrero de 2010, 13:56:16 »
El problema es que en Ansi C no existe el tipo de datos "bit". Supongo que esa es la razón de que cada compilador lo haga como mejor le convenga.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: duda:como negar bit;
« Respuesta #7 en: 15 de Febrero de 2010, 14:36:54 »
y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!

Hola Gera, yo hace tiempo usé ese método en CCS y funciona. Parece que en hitech no según Manutek.

Es que como dice Manolo, no existe el tipo de dato "bit" en ansi C. Yo cuando tengo q trabajar con bits le entro a las mascaras jeje.
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein


 

anything