TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: LAB_je en 07 de Septiembre de 2006, 08:55:18

Título: numero par o impar
Publicado por: LAB_je en 07 de Septiembre de 2006, 08:55:18
hola a todos!!!
existe alguna funcion en C que me diga si un numero es par o no??. no encuentro ninguna forma de hacerlo (dividiendolo entre dos me tiene que dar un numero entero, pero como compruebo si el resultado es entero o no???hay alguan funcion que me compruebe esto????). seguro que a alguien se le ocurre algo pq es un tonteria pero oy ando un poquito espeso!!!estoy programando en C18, y dicha comprobacion la tengo que realizar de un numero q esta constantemente incrementandose(se encuentra dentro de un for)!! muchas gracias
Título: Re: numero par o impar
Publicado por: vszener en 07 de Septiembre de 2006, 09:12:21
Pues en C está el operador módulo % , el cual al realizar una división por dos te dice si es par o no
Código: C
  1. if( num%2 == 0 )
  2.                      printf("Numero par\n")
  3.               else
  4.                      printf("Numero impar\n");


Suerte!!! :wink:
Título: Re: numero par o impar
Publicado por: nvicchi en 07 de Septiembre de 2006, 09:27:18
No programo los PIC en C, sino en assembler, pero me imagino que tendras algun operador a nivel de bits que te permita testear el estado de un bit especifico. Un número par siempre tiene su bit menos significativo en 0, y si es impar siempre es 1. Por lo tanto, para saber si un numero es impar o no, solo tenes que chequear ese bit. En asm, seria algo asi:

btfsc numero, 0
goto es_impar
goto es_par

Un abrazo.
Título: Re: numero par o impar
Publicado por: PalitroqueZ en 07 de Septiembre de 2006, 10:44:03
Cuando no puedo hacer una rutina en asm (ej: algo dificil ó engorroso) recurro al C (es un truquillo :)), algunos compiladores tienen la opción de mostrar el código C y su respectivo asm, o sea cada linea en C tiene su linea en asm, entonces hago la rutina que quiero en C y luego veo como el compilador la tradujo al ensamblador y por ahí me guío.

Salu2
Título: Re: numero par o impar
Publicado por: Cryn en 10 de Septiembre de 2006, 12:43:58
saludos, en ccs también existe una funcion de testeo de Bits (talvez sirva):

bit_test(var,bit); // var: variable de 8, 16 ó 32 bits; bit: numero de bit testeado 0 es LSB

que devuelve un '0' ó '1' segun corresponda, entonces podrias hacer algo asi como en assembler, talvez:

if(bit_test(var,0)==0)
  printf("Numero par\n");
else
  printf("Numero impar\n");
Título: Re: numero par o impar
Publicado por: aripod en 17 de Octubre de 2006, 21:03:54
Hace -1 elevao a ese numero. Si el resultado es 1 es par, sino impar