elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿¿¿Como saber si ciertos bits están activados??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿¿¿Como saber si ciertos bits están activados??  (Leído 2,977 veces)
harry_the_blogger

Desconectado Desconectado

Mensajes: 105


Visita mi blog es enriquemesa.blogspot.com


Ver Perfil WWW
¿¿¿Como saber si ciertos bits están activados??
« 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.


« Última modificación: 2 Octubre 2014, 02:45 am por harry_the_blogger » En línea

Vista mi blog es enriquemesa.blogspot.com
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿¿¿Como saber si ciertos bits están activados??
« Respuesta #1 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


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
harry_the_blogger

Desconectado Desconectado

Mensajes: 105


Visita mi blog es enriquemesa.blogspot.com


Ver Perfil WWW
Re: ¿¿¿Como saber si ciertos bits están activados??
« Respuesta #2 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)

En línea

Vista mi blog es enriquemesa.blogspot.com
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿¿¿Como saber si ciertos bits están activados??
« Respuesta #3 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.  
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
harry_the_blogger

Desconectado Desconectado

Mensajes: 105


Visita mi blog es enriquemesa.blogspot.com


Ver Perfil WWW
Re: ¿¿¿Como saber si ciertos bits están activados??
« Respuesta #4 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.
« Última modificación: 2 Octubre 2014, 04:31 am por harry_the_blogger » En línea

Vista mi blog es enriquemesa.blogspot.com
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿¿¿Como saber si ciertos bits están activados??
« Respuesta #5 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 ;)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como saber si me están espiando
Seguridad
Esperanza33 1 6,101 Último mensaje 12 Agosto 2010, 00:51 am
por pape
como saber que quientes estan asociados
Wireless en Linux
ricardosauls 2 2,149 Último mensaje 22 Febrero 2011, 20:33 pm
por ChimoC
Como saber si me estan hackeando
Seguridad
sacus 2 12,182 Último mensaje 29 Marzo 2011, 00:22 am
por Vjuan_
Como saber que APIs estan hookeadas?
Programación C/C++
t4r0x 8 3,663 Último mensaje 7 Febrero 2012, 06:51 am
por wachi
¿Cómo saber si un programa es de 32 o 64 bits?
Software
1mpuls0 6 1,136 Último mensaje 5 Abril 2014, 00:16 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines