C# 'ta int bir degiskenin bitlerine erisim

Katılım
9 Tem 2012
Mesajlar
235
Puanları
1
Yaş
33
Merhaba arkadaslar ;

C#'ta int olarak tanimladigimiz bir degiskenin bitlerine erisen bir kod varmidir ? Yani bu degiskenin istedigim bir bitini kontrol edebilir miyim ?

KontrolKalemi Mobile ile gönderildi.
 
Tesekkur ederim dostum ama yaomak istedigim aslinda tam olarak soyle ;

Dedigim gibi int olarak bir degisken tanimlayip ornegin bu degiskeni bir "if" kalibinda " eger ... integer'in 2. biti 1 olursa" gibi kullanmak istiyorum. Boyke bir konut var mi yada herhangi bir algoritmayla yapabilirmiyim bilmiyorum ve bayagidir da arastiriyorum..

Bilen arkadaslardan yardim beklerim..

KontrolKalemi Mobile ile gönderildi.
 
değişekni AND işlemine tabi tutarsanız ilgili bitin durumunu görebilirsiniz

AND işlemi doğruluk tablosu;

0 and 0 = 0
0 and 1= 0
1 and 0= 0
1 and 1= 1 görüldüğü gibi her iki bit 1 olunca 1 sonucunu veriyor bize buradan hareketle ilgili integer değişkenin kaçbitlikse bize lazım olan bitini 1 ile diğer bitleri 0 ile ve işlemine tabi tutarsak sonuç alabiliriz diye düşünüyorum. C# bilmiyorum azbuçuk C bilgimle yazıyorum belkide yanlış düşünüyorum. denemekte fayda var ama

int8 a; // a değişkeni 8 bitlik bir sayı olsun
sonuc= a && 0b00000100; //burada a değişkeninin 2.bitinin 1 olup olmadığını kontrol ettik ve sonuç değişkenine atadık.
if(sonuc==4) // a değişkenin 2.biti 1 olunca sonuç değişkeni 4 değerini alması lazım almışsa şu işlemleri yap.
{
program kodları;
}
 
Tesekkur ederim Sn. Secretagent mantikli geldi bana da yonteminiz . Denicem en kisa zamanda ve donus yapicam.

KontrolKalemi Mobile ile gönderildi.
 
string dataBits = (Convert.ToString(deger, 2).PadLeft(8,'0')); sayının 8 bitlik bir sayı olduğunu kabul edersek
şeklinde bir kod satırı ile istediğin değeri ikilik düzende bir stringe atayabilirsin.
Daha sonra hangi biti kullanmak istiyorsan
if (dataBits[n] == '1' ya da '0') şeklinde bir karşılaştırma yapabilirsin. n 0 ile 7 arasında bir tamsayı
 
Son düzenleme:
Bende de takıntı oldu ve iyi de oldu aslında çok basit imiş.

using System.Collections; // BitArray için gerekli isim uzayını ekliyoruz öncelikle


Int deger; //Bitlerine ayıracağımız integer değer

byte[] bytes = BitConverter.GetBytes(deger); //Önce integer değerimizi baytlarına ayırıyoruz
BitArray bitArray = new BitArray(bytes); //Ardında bitlerine ayırıyoruz



label1.Text = (bitArray[15].ToString()); // Örnek olarak 15. Bit in durumunu labele yazdım bu kadar basitmiş.
 
Cok cok tesekkur ederim Sn.rebelwise inanin cok makbule gecti..

KontrolKalemi Mobile ile gönderildi.
 
Macix in yazdığı yöntem daha doğal bir yöntem. Onu tercih etmen daha iyi olabilir. Ben aslında o yöntemi yazacaktım tam hatırlayamadığım için benim kendi geliştirdiğim yöntemi yazdım...
 
Son olarak Sn.rebelwise orneginizdeki dataBits stringinin ilgili bitini setlemek istersem nasil yaoabilirim ? Cunku databits[2]=1 yaptim yemedi cunku :) sanirim string bir ifade oldugu icin. Program bilgim biraz zayiftir k.bakmayin..

KontrolKalemi Mobile ile gönderildi.
 

Forum istatistikleri

Konular
129,152
Mesajlar
923,720
Kullanıcılar
451,490
Son üye
murat osmanoğlu

Yeni konular

Çevrimiçi üyeler

Geri
Üst