Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: harry_the_blogger en 2 Octubre 2014, 02:37 am



Título: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: harry_the_blogger en 2 Octubre 2014, 02:37 am
Hola, estoy creando un programa que necesita identificar un cierto patron de bits al inicio del byte. Por ejemplo: Si byte comienza con 10100xxx, ir al codigo tal.

Espero que haya explicado bien mi problema. La idea es saber si ciertos bits dentro de un byte están activados, e ignorar el resto. No sé como lograr eso. Quiero lograr comparar, por ejemplo, los primeros cinco bits contra un patron conocido. No quiero identificar solo un bit, quiero identificar un grupo de ellos.

Gracias por su ayuda.


Título: Re: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: engel lex en 2 Octubre 2014, 02:45 am
puedes hacer una operacion a nivel de bits, ej

Código:
a= 41248 & B1010000000000000//40960
eso debería devolverte 40960 que es el valor equivalente en binario


Título: Re: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: harry_the_blogger en 2 Octubre 2014, 02:48 am
Oye, ¿¿podrías explicarme con un ejemplo en C/C++?? Es que no tengo muy claro como podría colocar eso dentro de un if (en otras palabras, no entiendo como eso disparará el if solo cuando cierto patron de bits estén al comienzo del byte)



Título: Re: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: engel lex en 2 Octubre 2014, 03:28 am
sorry! me equivoqué es así...
usando una mascara...

la mascara son los bits que quieres "aislar" ej


Código
  1. int mascara = 3968;//1111 1000 0000 aislar los primeros 5 bits
  2. int patron = 2560;//1010 0-000 0000  contiene el patron y relleno
  3. int numeroBueno = 2658;//1010 0110 0010
  4. int numeroMalo = 3744;//1110 1010 0000
  5. if((mascara & numeroBueno) == patron){
  6. cout << "bueno 1 \n";
  7. }else{
  8. cout << "malo 1 \n";
  9. }
  10. if((mascara & numeroMalo) != patron){
  11. cout << "bueno 2 \n";
  12. }else{
  13. cout << "malo 2 \n";
  14. }
  15.  


Título: Re: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: harry_the_blogger en 2 Octubre 2014, 04:22 am
Gracias por tu ayuda. Lo probaré luego y te comentaré los resultados. Supongo que si tengo algún problema puedo volver al foro, ¿o no.?

Ah, una duda, en la parte que dice

Código
  1. if((mascara & numeroMalo) != patron){
  2.  
  3. cout << "bueno 2 \n";
  4.  
  5. }else{
  6.  
  7. cout << "malo 2 \n";
  8.  
  9. }
  10.  
  11.  

No debería decir:

Código
  1.  
  2. if((mascara & numeroMalo) == patron){
  3.  
  4. cout << "bueno 2 \n";
  5.  
  6. }else{
  7.  
  8. cout << "malo 2 \n";
  9.  
  10. }
  11.  
  12.  
  13.  
  14.  

Creo que se te escapó un error. XD. O si no, explicame por favor porque el ultimo if-else no sigue la logica del primero.

Gracias por tu ayuda.


Título: Re: ¿¿¿Como saber si ciertos bits están activados??
Publicado por: engel lex en 2 Octubre 2014, 04:29 am
si el problema es sobre esto continua el tema, en lo que puedas lo pruebas y me avisas de tus resultados ;)