TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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
-
Pues en C está el operador módulo % , el cual al realizar una división por dos te dice si es par o no
Suerte!!! :wink:
-
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.
-
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
-
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");
-
Hace -1 elevao a ese numero. Si el resultado es 1 es par, sino impar