moro Postat Aprilie 28, 2014 Partajează Postat Aprilie 28, 2014 Va salut, am un senzor caruia trebuie sa-i citesc 1byte (8biti) din care primii 3 MSB sunt un parametru, iar urmatorii 5LSB sunt alt parametru Sa zicem ca am 217 decimal, asta in binar vine 11011001, asta daca iau separat fiecare grupa de biti, imi da MSB`urile = 6 si LSB`urile =25 cu returnarea valorii din MSB am reusit cu bitshifright 217>>5biti=6, dar daca 217>>3 imi da 27, nu 25 cat ar trebui, cum pot extrage LSB-urile? Link spre comentariu
moro Postat Aprilie 28, 2014 Autor Partajează Postat Aprilie 28, 2014 Am asa char xgout[15]; int muu; unsigned short int lulu; main { muu=217; lulu=217>>5; // retuneaza 6 decimal MSB lulu=217>>3; // retuneaza 27 decimal LSBs } acel 1F ce fac cu el? Link spre comentariu
cristi7521 Postat Aprilie 29, 2014 Partajează Postat Aprilie 29, 2014 (editat) lulu=muu & 0x1F; faci 0 cei trei biti mai semnificativi care nu iti trebuiesc 0x1F=0b00011111 Mai multe aici: http://en.wikipedia.org/wiki/Bitwise_operation http://www.tutorialspoint.com/cprogramming/c_bitwise_operators.htm Editat Aprilie 29, 2014 de cristi7521 Link spre comentariu
moro Postat Aprilie 29, 2014 Autor Partajează Postat Aprilie 29, 2014 Va multumesc !! Avusem ceva probleme dupa, pt ca mai faceam bitshift dupa & Acu am vazut ca AND acolo unde nu`s ambii biti 1 returneaza 0 217 11011001 1f 00011111 = 00011001 N-am mai facut bitshift dupa &, si imi arata ok acum Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum