bit_test kullanımı hakkında

Başlatan ziyaretci, 02 Haziran 2012, 16:31:06

ziyaretci

int abc[]={0b11100111,0b11100111,0b11100111};


  c=bit_test(abc[3],7);                        // abc dizisinin 3. byte' ının 7. bitini kontrol ediyor ve 1 ise c bir çıkışı 0 ise
                                                           // c 0                   
                                                          // çıkışı veriyor,

1. sorum ise  işleme göre çıkış veren c değişkenini tanıtıyoruz int c=0;  abc dizisinin 3. byte' ının 7. biti 1 diyelim yani c bir çıkışı vericek. O zaman" int c=1; " mi olacak?

2. ben bu c değişkenini deyim içerisinde "if(c=1) " diyemi yoksa " if(c==1)" diyemi kullanabilirim.
 
    Normal değişkenlerde tam sayı bildiriyorduk.Bu işlem ise lojik 1 ve 0 olduğundan kafam karıştı.
  Yardımlarınızı bekliyorum.

JOKERAS

if(c = 1)
ifadesi ile c değişkenine 1 değerini atama yapıyorsunuz,
bu atama sonucu if deyimi hep True-Doğru-sıfır dışı, bir değer olarak algılayacak.
Bu atama direkt olarak if deyiminin sorgusunu ortadan kaldırır ve hiç bir anlamı olmaz.
Bu şekilde ise
if(c == 1) c 1'e eşitmi diye sorgu yapıyorsunuz
eğer 1 ise şunu yap değilse şunu yap gibi,doğru yöntem budur.
Normal dediğiniz işlemlerde yerleştirdiğiniz değer sıfır dışı bir değer ise
yüklediğiniz değer ne olursa olsun if deyiminin ürettiği true'dur.
Değer sıfır ise if deyimi false-yanlış-sıfır üretir.


izturk

if(bit_test(abc[2],7))
{

}

şeklinde kullanılırsa abc[2] nin 7. biti 1 ise olur.

if(!bit_test(abc[2],7))
{

}
şeklinde kullanılırsa 0 ise olur. daha kolay bir kullanım.

ziyaretci

Alıntı yapılan: izturk - 02 Haziran 2012, 20:51:17
if(bit_test(abc[2],7))
{

}

şeklinde kullanılırsa abc[2] nin 7. biti 1 ise olur.

if(!bit_test(abc[2],7))
{

}
şeklinde kullanılırsa 0 ise olur. daha kolay bir kullanım.


  gerekli cevabımı aldım teşekkürler  @izturk


Alıntı yapılan: JOKERAS - 02 Haziran 2012, 17:01:18
if(c = 1)
ifadesi ile c değişkenine 1 değerini atama yapıyorsunuz,
bu atama sonucu if deyimi hep True-Doğru-sıfır dışı, bir değer olarak algılayacak.
Bu atama direkt olarak if deyiminin sorgusunu ortadan kaldırır ve hiç bir anlamı olmaz.



@JOKERAS bu yeterliydi.Teşekkürler.