Pre nekoliko nedelja su mi @zaso011 i @veselinovic pomogli mnogo oko bitiva i hvala im puno, pa imam jos jedno pitanjce jel sam jako slab sa mestom u kontroleru sa 2mb radim 12f683 ostamo mi je jos 200 kb a imam jos dosta da kuckam i racunam
naime definisao sam niz od 24 bita
a var bit [24]
e sada dali ima neka naredba koja bi izmenula mesta dva bita
ako je
a[24]=1
a[23]=0
da bude
a[24]=0
a[23]=1
kako mogu da im izmanim mesta,znam da definisem jos dva bita pa da uradim ovo
b var bit[2]
b[0]=a[24]
b[1]=a[23]
a[23]=b[0]
a[24]=b[1]
al malo mesta imam...mislim za ovo bi imao al ne znam dali bi imao za ostalo zato pitam dali ima neka naredba koja bi to uradila.Unapred hvala
Mislis da ovo gore sto sam napisao nebi skoro nista mesta uzelo?A mislim da sam skontao kako i sa jednim dodatnim bitom da odradim to
da
b var bit
a[24]=b
a[24]=a[23]
a[23]=b
jesi tako mislio?
Kada se radi sa bitovima, bolje je koristiti bitwise operacije nego aritmetičke operacije.
Ono što je @veselinovic napisao radi za integere, ali za bitove je bolje koristiti bitwise xor:
a=a^b;
b=a^b;
a=a^b;
Code (c):
#include <stdio.h>
int main() { int a,b; printf("pre | posle\n"); printf(" a b | a b\n"); printf("==========\n"); for(int i=0; i<4; i++){
a=(i>>1)&1;
b=i&1; printf(" %d %d ", a, b);
a=a^b;
b=a^b;
a=a^b; printf(" %d %d\n", a, b); }
return0; }
pre | posle
a b | a b ========== 0000 0110 1001 1111
odradio hvala momci a sada se kunem da pic 12f683 vise uzivotu necu uzeti u ruke ja volim sve kad upakujem da bude malo sa smd elementima, aj kad se radi o necem malom ok a ja sam se igrao sa can magistralama u golfu6 da bi prilagodijo komande volana multi mediji jel originalni can komunikator od medije nije to uradio uspeo sam jel sam ko mazga tvrdoglav,umesto da sam uzeo 16f688 cetiri puta je veci pa naterao bi ga i da peva a ne jednu petlju da koristim deset puta samo da bi mesta ustedeo.Jos jednom hvala svima