Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 4.680 pregleda

Najnovija ↓

operacije nad bitovima 17.08.2005. u 18:16 · pre 258 meseci
izmenjeno 1 put, poslednji put damir0205 17.08.2005. u 18:17
  1. damir020517.08.2005. u 18:17zapis iz teksta poruke
#1
ovo pitanje ima vise veze s mikrokontrolerima, ali buduci da se radi o c-u molim za pomoc.

kako nizia 4 i visa 4 bita varijable c preslikati u visa 4 bita varijable d?
u sljedecem primjeru se to preslikava na niza 4 bita varijable c.

d = (d & 0xF0) | (c >> 4);
d = (d & 0xF0) | (c & 0x0F);

ja bi trebao napraviti istu stvar samo sto bi se to trebalo odnositi na visa cetri bita varijable d?
unaprijed zahvaljujem
Re: operacije nad bitovima 17.08.2005. u 18:28 · pre 258 meseci
izmenjeno 1 put, poslednji put yooyo 17.08.2005. u 18:30
  1. yooyo17.08.2005. u 18:30zapis iz teksta poruke
#2
Ako sam te dobro razumeo...

d = (c & 0xF0) | (d & 0x0F); // visa 4 iz C ide u visa 4 u D
d = ((c << 4) & 0xF0) | (d & 0x0F); // niza 4 iz C idu u visa 4 u D

u oba slucaja donja 4 bita u D nece biti promenjena

yooyo
Re: operacije nad bitovima 17.08.2005. u 20:02 · pre 258 meseci
izmenjeno 1 put, poslednji put NrmMyth 17.08.2005. u 20:06
  1. NrmMyth17.08.2005. u 20:06zapis iz teksta poruke
#3
Nisam bas razumio pa pogledaj ovo.
Pretpostavljam da se radi o -- unsigned char?

c= 0010|0110
d= 0000|0000

Ti sada zelis izluciti 4 visa iz c i 4 niza iz c i zatim na njih primjeniti operator& pa to spremiti u 4 visa u d?

Ako je tako, to ide ovako:
d=( c & (c<<4) );

Interno:
0010|0110 << 4 = 0110|0000
0110|0000 & 0010|0110 = 0010|0000 = d

ili ako zelis samo d nadopuniti koristi |= umjesto =.

Nadam se da sam pomogao.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme