Título: DUDA : Punteros a bits individuales y su manipulacion Publicado por: lucaslopez0000 en 19 Enero 2013, 18:37 pm Hola a todos. He estado leyendo sobre los punteros en C y me parecen muy utiles. Pero tengo varias preguntas
1) Si tengo un int ( 32 bits ) que vale 16 en binario 00000000000000000000000000010000 ¿ Puedo crear un puntero a un bit concreto para modificarlo a voluntad ? 2) ( No es una pregunta que haya leido sino experiencia propia ) Si apunto un char ( 8 bits ) en la posicion de memoria de un short int ( 16 bits ) y cambio el char , ¿ Cambiarian los 8 primeros bits del int o los 8 ultimos ? Muchas gracias. Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: durasno en 19 Enero 2013, 20:12 pm Citar 1) Si tengo un int ( 32 bits ) que vale 16 hasta donde tengo entendido eso no es posible. Para modificar un bit vas a necesitar una mascara(tema: operadores de bit)en binario 00000000000000000000000000010000 ¿ Puedo crear un puntero a un bit concreto para modificarlo a voluntad ? Citar 2)Si apunto un char ( 8 bits ) en la posicion de memoria de un short int ( 16 bits ) La verdad no se entiende, te referis a algo como:y cambio el char , ¿ Cambiarian los 8 primeros bits del int o los 8 ultimos ? Código esto daria un warning, habria que hacer un cast Saludos PD: nose cual es tu objetivo, pero tal vez tambien te interese el tema: campos de bit Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: avesudra en 19 Enero 2013, 20:37 pm Desde C no es posible modificar bits individuales, lo de los campos de bits no es portable entre compiladores por lo que tendrás que usar máscaras como dice durasno.Si apuntas a un short int en teoría te cambiaría los 8 últimos.Para eso puedes practicar con este código:
Código Un ejemplo de como hacer que se active el bit 1 y el 8 de la variable valor con la puerta lógica or. Código
Deberías echarle un vistazo a esto: http://www.bitschips.com/infoind/prg_msc.pdf ¡Saludos! :rolleyes: Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: 0xDani en 19 Enero 2013, 21:01 pm En cuanto a si modifica los primeros o los ultimos bits depende del endianness (http://es.wikipedia.org/wiki/Endianness) de la arquitectura.
Saludos. Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: avesudra en 19 Enero 2013, 21:17 pm En cuanto a si modifica los primeros o los ultimos bits depende del endianness (http://es.wikipedia.org/wiki/Endianness) de la arquitectura. Curioso, había leído algo pero nunca sabía porqué era.Saludos. Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: x64core en 20 Enero 2013, 00:45 am se puede acceder a cualquier bit de un byte/WORD/... usando los operadores binarios: | , &
Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: lucaslopez0000 en 20 Enero 2013, 15:39 pm se puede acceder a cualquier bit de un byte/WORD/... usando los operadores binarios: | , & Por lo que he leido esos operadores sirven para otros propositos , ¿ Como lo haces ??? Pon algun codigo PD : Muchas gracias a todos por sus respuestas , me aclararon mucho PD2 : Al poner etiquetas de codigo solo veo una parte del codigo ... ¿ Y eso ? No sera xq estoy navegando con el celular ¿? Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: 0xDani en 20 Enero 2013, 17:13 pm PD2 : Al poner etiquetas de codigo solo veo una parte del codigo ... ¿ Y eso ? No sera xq estoy navegando con el celular ¿? Tambien me pasa con el movil. Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: rir3760 en 20 Enero 2013, 17:37 pm Por lo que he leido esos operadores sirven para otros propositos Supongo es una confusión al pensar en los operadores lógicos AND y OR ("&&" y "||"), estos resultan en el valor 1 o cero dependiendo si se cumple o no la condición.Los operadores a nivel de bits AND, OR y XOR ("&", "|" y "^") permiten realizar las mentadas operaciones con valores de tipo int. Para ejemplos nada mejor que utilizar el motor de búsqueda de los foros. Un saludo Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: x64core en 20 Enero 2013, 18:39 pm Luce como que no han leído ni siquiera algo básico de C/C++ (http://www.cprogramming.com/tutorial/bitwise_operators.html)
Existen bastante operadores para la manipulación a nivel de bit. aunque no todos comparado con Ensamblador, este tiene aún más. en todo caso se pueden hacer implementaciónes también. Título: Re: DUDA : Punteros a bits individuales y su manipulacion Publicado por: Foxy Rider en 21 Enero 2013, 18:37 pm ¿Querés extraer un bit? ignorá los primeros posts ... tanto quilombo al divino pedo, hacés un simple operador de bit shift y a la lona, tenés el bit que te interesa.
A otrx usuarix le había explicado un poco sobre manipular bits, fijate si se entiende → http://foro.elhacker.net/programacion_cc/ayuda_con_este_codigo-t368590.0.html;msg1772216#msg1772216 Podés extraer y modificar cualquier bit individual, punto. Saludos. |