[ damir0205 @ 17.08.2005. 17:16 ] @
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

[Ovu poruku je menjao damir0205 dana 17.08.2005. u 18:17 GMT+1]
[ yooyo @ 17.08.2005. 17:28 ] @
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

[Ovu poruku je menjao yooyo dana 17.08.2005. u 18:30 GMT+1]
[ NrmMyth @ 17.08.2005. 19:02 ] @
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.

[Ovu poruku je menjao NrmMyth dana 17.08.2005. u 20:06 GMT+1]
[ damir0205 @ 17.08.2005. 19:44 ] @
hvala obadvojici puno ste pomogli, provjerio sam i radi.