[C con Clase] Leer ciertos bits de una variable WORD

Juan jmicanovelles en gmail.com
Dom Oct 5 09:54:04 CEST 2008


David: No lo entiendes...porqué es bueno entender las cosas, tal vez no sea la mejor manera de hacerlas, pero se puede.
Tu decias como introducias datos:
#include <iostream>
using namespace std;
int main()
{
//FORMATO 8-4-4
unsigned short XXX=61605, XX1, XX2, XX3;
cout<<"XXX=12801 = 11110000 1010  0101"<<endl;
XX1=XXX/256; cout<<"Bloque 8 bits: "<<XX1<<endl;
XX2=(XXX-XX1*256)/16; cout<<"Bloque central de 4 bits: "<<XX2<<endl;
XX3=XXX-XX1*256-XX2*16;cout<<"Bloque de menos valor de 4 bits: "<<XX3<<endl;
//Poner valores, a la inversa de como lo has sacado
XX1=97; XX2=7; XX3=5;
XXX=XX1*256 + XX2*16 + XX3;
cout<<"XXX=01100001 0111 0101 "<<XXX<<endl;
return 0;
}

Buf! muchos mensajes para una respuesta que ya ha sido contestada...
Un saludo.
Juan






El pasado 2008-10-04 15:32:28, David escribió:
 
D> no entiendo lo de viene definida de otro sistema....
D> cuando te llega la metes en la varibale que creaste del tipo union y despues
D> la suas como se te da la gana.
D> cuando terminas haces variable.var y tenes el word otra vez....
D> aca esta la diferencia en hacer las cosas bien y que funcionen.
D> se llama calidad esa diferencia
D> David
D> El 4 de octubre de 2008 9:19, Juan Pablo San Martín
D> <coyotedemon en gmail.com>escribió:
D> > Se agradecen las respuestas, pero la variable está definida en otro
D> > sistema, y ya viene así. De todas maneras, con el código de Zaka Elab me
D> > funcionó bastante bien.
D> >
D> > De todas maneras, muchas gracias.
D> >
D> > JPS
D> >
D> > Juan escribió:
D> >
D> >  Hola David, sabes que te digo, te he enviado otro mensaje, pero quiero
D> >> rectificarlo, tienes razón, usar una union con una estructura de bits es lo
D> >> mejor, porque aunque el WORD nos venga como parámetro en una función, o bien
D> >> queramos pasar un WORD, nada nos impide usar la unión.
D> >> Así que mil perdones.
D> >> Juan
D> >>
D> >>
D> >>
D> >>
D> >>
D> >>
D> >>
D> >>
D> >> El pasado 2008-10-04 01:10:43, David escribió:
D> >>  D> la forma correcta de hacer lo que vos queres es la siguiente:
D> >> D> struct xxx {
D> >> D> unsigned char valor1; // son 8 bits....
D> >> D> unsigned char valor2 : 4; //le digo que tiene que ocupar solo 4 bits
D> >> D> unsigned char valor3 : 4; //le digo que tiene que ocupar solo 4 bits
D> >> D> }
D> >> D> union {
D> >> D> struct xxx bits;
D> >> D> word var;
D> >> D> } nombre;
D> >> D> como lo usas... si queres referirte a la variable word seria
D> >> nombre.word=10;
D> >> D> o x = nombre.word;
D> >> D> si queres usar alguno de los bits seria nombre.bits.valor1;
D> >> D> David
D> >> D> 2008/10/3 Juan <jmicanovelles en gmail.com>
D> >> D> > Yo lo hago así:
D> >> D> > #include <iostream>
D> >> D> > using namespace std;
D> >> D> > int main()
D> >> D> > {
D> >> D> > unsigned short word=12801;
D> >> D> > cout<<"Formato 4 4 8"<<endl;
D> >> D> > cout<<"word=12801 = 0011 0010 0000001"<<endl;
D> >> D> > word=word<<4;
D> >> D> > word=word>>12;
D> >> D> > cout<<word<<endl;
D> >> D> > word=291;
D> >> D> > cout<<"Formato 8 4 4"<<endl;
D> >> D> > cout<<"word=291 = 0000001 0010 0011"<<endl;
D> >> D> > word=word<<8;
D> >> D> > word=word>>12;
D> >> D> > cout<<word<<endl;
D> >> D> > }
D> >> D> >
D> >> D> > Un saludo.
D> >> D> > juan
D> >> D> >
D> >> D> >
D> >> D> >
D> >> D> >
D> >> D> >
D> >> D> > El pasado 2008-10-03 14:52:05, Juan Pablo San Martín escribió:
D> >> D> >
D> >> D> > JPSM> Estimados:
D> >> D> > JPSM>     Tengo una variable word con nombre XXX, la cual, dentro de
D> >> los 16
D> >> D> > JPSM> bits que tiene, tiene información con el siguiente esquema:
D> >> D> > JPSM> BITS 0 al 7: valor 1
D> >> D> > JPSM> BITS 8 al 11: valor 2
D> >> D> > JPSM> BITS 12 al 15: valor 3
D> >> D> > JPSM>     La cosa es que necesito obtener el valor 2, ¿alguien me
D> >> puede dar
D> >> D> > JPSM> una mano?
D> >> D> > JPSM> Gracias de antemano,
D> >> D> > JPSM> JPS
D> >> D> > JPSM> _______________________________________________
D> >> D> > JPSM> Lista de correo Cconclase Cconclase en listas.conclase.net
D> >> D> > JPSM>
D> >> D> >
D> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> >> D> > JPSM> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
D> >> D> > _______________________________________________
D> >> D> > Lista de correo Cconclase Cconclase en listas.conclase.net
D> >> D> >
D> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> >> D> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
D> >> D> >
D> >> D> -- D> (\__/)
D> >> D> (='.'=)This is Bunny. Copy and paste bunny into your
D> >> D> (")_(")signature to help him gain world domination.
D> >> D> _______________________________________________
D> >> D> Lista de correo Cconclase Cconclase en listas.conclase.net
D> >> D>
D> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> >> D> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
D> >> _______________________________________________
D> >> Lista de correo Cconclase Cconclase en listas.conclase.net
D> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> >> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
D> >>
D> >>
D> >>
D> >
D> >
D> > _______________________________________________
D> > Lista de correo Cconclase Cconclase en listas.conclase.net
D> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
D> >
D> -- 
D> (\__/)
D> (='.'=)This is Bunny. Copy and paste bunny into your
D> (")_(")signature to help him gain world domination.
D> _______________________________________________
D> Lista de correo Cconclase Cconclase en listas.conclase.net
D> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
D> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase