Bir değişkenin x bitini diğer değişkenin x bitine aktar

Başlatan zakbay, 10 Eylül 2009, 10:01:29

zakbay

Merhaba

a değişkeninin x bitini okuyup bu değeri
b değişkeninin x bitine aktarmak istiyorum

int8 a,b;
int1 x;

x = bit_test(a,0);       // burada x bitine a'nın 0 ncı bit durumu alınıyor

b = ?

b değişkeninin 0 ncı  bitine bu okuduğum bilgiyi aktarmam gerekiyor


bunu nasıl yapabilirim
Tek dostum çalışmak...

ferdem

CCS C help de bit işlemleriyle ilgili fonksiyonlar var. Help i biraz daha kurcalayarak zaman kazanabilirsiniz.
set_bit(byte,bit_no); fonksiyonu var, istenilen byte ın istenilen bitini lojik 1 yapıyor. clear_bit(byte,bit_no) de tam tersini yapıyor. bit_test in sonucunu "if" ile kontrol edip işlemi yapabilirsiniz. Kolay gelsin.

zakbay

int8 a,b;
int1 x;

x = bit_test(a,0);       // burada x bitine a'nın 0 ncı bit durumu alınıyor

if (x==1)set_bit(b,0);
else bit_clear(b,0);


şeklinde çözüm buldum ama uzun bir çözüm oldu gibi geldi daha kestirme bir çözüm varmıdır.

AND ile yapmayı denedim b değişkeninin diğer bitleri değişti
b değişkenin diğer bitlerinin de eski durumunun değişmemesi gerekiyor
Tek dostum çalışmak...

z

Bunun icin b de x pozisyonundaki biti sifirlayip, a nin x posizyonundaki biti ile orlamalisin.

x, 0..7 olmak uzere bit numarasi

Asagidaki ifadeyi C de diledigin gibi yaz

b = (b and (255 - 2^x))  or (a and 2^x)

255 - 2^x yerine  not X

2^x yerine 1<<x vs de yapabilirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com