Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 21 Octubre 2016, 05:16 am



Título: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: palacio29 en 21 Octubre 2016, 05:16 am
Hola

Tengo una duda con respecto a bits en C.

Me piden que haga un programa en donde cada persona ingresada tenga un numero de categoria.

Es decir..

Persona 1 = Horacio
Categoria= W

El problema es que la categoria no me la dan con numeros y me piden que halle la categorai, copio textual "El numero de categoria se encuentra dentro del unsigned char en los cuatro bits mas significativos(los de la izquierda). Entonces me piden que a traves de la letra que ingresaron, que con operaciones de bits, halle la categoria.

Entonces yo hago esto

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7.    char letra='w';
  8.    int numero;
  9.  
  10.    numero=letra&(15<<4);
  11.  
  12.    printf("\nEl numero es %d",numero);
  13.  
  14.  
  15.  
  16.    return 0;
  17. }
  18.  

Osea, agarro la letra, uso una mascara de 15 y la corro cuatro lugares y me evalua en esos 4 bits si estan prendidos o no.
El resultado de "w" seria 112, seria la categoria.

El problema es que no se si esa es la categoria correcta.
Porque yo puedo hacer que esos 4 bits mas significativos ponerlos los 4 en la posicion menos significativa y aplicar la mascara de 15, y dejarlos ahi y me daria una categoria 7.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7.    char letra='w';
  8.    int numero;
  9.  
  10.    numero=(letra>>4)&15;
  11.  
  12.    printf("\nEl numero es %d",numero);
  13.  
  14.  
  15.  
  16.    return 0;
  17. }
  18.  



Entonces esa es mi duda, cual seria la respuesta correcta?


Título: Re: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: Eternal Idol en 21 Octubre 2016, 09:31 am
El problema es que la categoria no me la dan con numeros y me piden que halle la categorai, copio textual "El numero de categoria se encuentra dentro del unsigned char en los cuatro bits mas significativos(los de la izquierda). Entonces me piden que a traves de la letra que ingresaron, que con operaciones de bits, halle la categoria.

Si partis de w: 119d, 0x77, 01110111b el resultado correcto es 00000111b es decir 7. Con el desplazamiento a derecha lo conseguis, no se para que intentas usar una mascara en primer lugar (salvo que estes probando con codigo donde el MSB este a la derecha y no a la izquierda).

PD. No crees mas hilos sobre manipulacion de bits, ya tenes dos.


Título: Re: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: palacio29 en 21 Octubre 2016, 15:08 pm
Si partis de w: 119d, 0x77, 01110111b el resultado correcto es 00000111b es decir 7. Con el desplazamiento a derecha lo conseguis, no se para que intentas usar una mascara en primer lugar (salvo que estes probando con codigo donde el MSB este a la derecha y no a la izquierda).

PD. No crees mas hilos sobre manipulacion de bits, ya tenes dos.

Disculpa, pense que sabia el tema pero tenia esta duda. No logro entender porque se pasan los 4 bits totalmente hacia la derecha, porque si los paso a la derecha me da un 7 y si yo paso los 4 bits mas significativos a la derecha, hago una mascara y luego los paso nuevamente hacia los bits mas significativos(hacia su posicion inicial), me daria un 112.


Título: Re: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: Eternal Idol en 21 Octubre 2016, 15:21 pm
Para que te de 112 no estas tomando 4 bits sino 8:
01110000b

Con 4 bits podes expresar un conjunto de numeros que va de 0 a 15.
0000b
1111b

Por eso en el otro hilo te pregunte el tamaño del numero.

PD. Si quisieras obtener 112 no haria falta mover nada simplemente usarias la mascara 0xF0.


Título: Re: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: palacio29 en 21 Octubre 2016, 15:24 pm
Para que te de 112 no estas tomando 4 bits sino 8:
01110000b

Con 4 bits podes expresar un conjunto de numeros que va de 0 a 15.
0000b
1111b

PD. Si quisieras obtener 112 no haria falta mover nada simplemente usarias la mascara 0xF0.

Gracias, ahi ya entendi.


Título: Re: Consulta Problema Con Bits - Cual es la respuesta correcta?
Publicado por: Eternal Idol en 21 Octubre 2016, 15:25 pm
De nadas  ::)