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.
puedes hacer una operacion a nivel de bits, ej
a= 41248 & B1010000000000000//40960
eso debería devolverte 40960 que es el valor equivalente en binario
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)
sorry! me equivoqué es así...
usando una mascara...
la mascara son los bits que quieres "aislar" ej
int mascara = 3968;//1111 1000 0000 aislar los primeros 5 bits
int patron = 2560;//1010 0-000 0000 contiene el patron y relleno
int numeroBueno = 2658;//1010 0110 0010
int numeroMalo = 3744;//1110 1010 0000
if((mascara & numeroBueno) == patron){
cout << "bueno 1 \n";
}else{
cout << "malo 1 \n";
}
if((mascara & numeroMalo) != patron){
cout << "bueno 2 \n";
}else{
cout << "malo 2 \n";
}
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
if((mascara & numeroMalo) != patron){
cout << "bueno 2 \n";
}else{
cout << "malo 2 \n";
}
No debería decir:
if((mascara & numeroMalo) == patron){
cout << "bueno 2 \n";
}else{
cout << "malo 2 \n";
}
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.
si el problema es sobre esto continua el tema, en lo que puedas lo pruebas y me avisas de tus resultados ;)