Si alguien entiende esto porfavor ke me ayude!!!!

O_o??
27 de Abril del 2004
Escriba un programa que utilice una función que almacene un valor especificado en posiciones de bits especificadas de un entero. La función debe tener el siguiente prototipo:

int store_bit field( int original_value, int value_to_store, unsigned starting_bit, unsigned ending_bit);

Asuma que los bits de un entero se numeran de derecha a izquierda. Así, la posición del bit de comienzo no puede ser menor que la posición del bit final

Ayuda: Hay cinco pasos para almacenar un valor en un campo de bits.
a) Construya una máscara, un valor con unos en las posiciones de bit que correspondan al campo deseado.
b) Usando el complemento uno de la máscara, limpie todos los bits en el campo.
c) Desplace el nuevo valor hacia la izquierda de tal manera que quede alineado con el campo.
d) Haga un AND con el valor desplazado de la mascara para asegurar que este no tiene bits fuera del campo
e) Haga un OR del valor resultante con el entero original

La tarea mas difícil es construir la mascara. Ud. Puede comenzar por hacer un casting del valor ~0 a un valor sin signo (unsigned) y después desplazarlo.

"Si alguien capta algo d lo que hay que hacer en este ejercicio porfavor ke me diga... Alguna idea, algo lo que sea sera bien recibido..."

carmamezo
27 de Abril del 2004
La verdad es que no sé muy bien qué es lo que quieres hacer, pero te dejo aqui una pequeña ayuda para el manejo de bits:
<< : desplaza a la izquierda tantos bits como se desee (por la dcha entran 0s).
char a=5; //a=00000101 (en binario)
a<<3; //a=00101000 (a=40)
Es una manera de hacer multiplicaciones por potencias de 2:5*2^3=5*8=40
>> : lo mismo pero desplaza a la dcha los bits (por la izq entran 0s).
char a=9; //00001001
a>>3; //00000001 (a=1)
se divide entre potencias de 2: 9/2^3=9/8=1
Para hacer máscaras se usan los operadores AND y OR: '&' y '|' respectivamente.
Tener en cuenta que:
0 OR 0=0
1 OR 0=1
0 OR 1=1
1 OR 1=1
y que:
0 AND 0=0
1 AND 0=0
0 AND 1=0
1 AND 1=1
Por ejemplo, supongamos que queremos conocer el valor del 4º bit de un byte empezando por la dcha:
char a=10;//a=00001010
char b=8;//creo un byte máscara, con todos los bits que no me interesan a 0 y a 1 el/los que me interasa/n a=00001000
a=a&b;//como 0 AND 1 = 0 y 0 AND 0 =0, donde haya un 0 se queda un 0 y sólo en aquellas posiciones en las que haya dos unos se quedará un 1 (1 AND 1 = 1).
//Por tanto a=00001000;
a=a>>3;//a=00000001
if(a==1)
printf("El valor del 4º bit es 1.");
else
printf("El valor del 4º bit es 0.");
En fin estos son los operadores básicos para manejo de bits, el operador OR se usa para poner 1s donde se desee, igual uso que el AND.
Espero que te sirva de ayuda, un saludo.

o_O?
27 de Abril del 2004
Gracias me fue d mucha ayuda