tacettinilkar
Üye
- Katılım
- 18 Kas 2009
- Mesajlar
- 7
- Puanları
- 1
- Yaş
- 56
Arkadaşlar,
Elimde 32 bitlik bir TAG var. Butona bastığımda bu TAG içindeki bir bitin setlenmesini/resetlenmesini istiyorum (mesela 27. bit) bunu nasıl yapabilirim?
bunu VB veya C ile de yapabiliriz. Yönetimi bilen var mı yoksa illa da code mu gerekli, bunu yapabilecek kodu yazıp buraya koyabilirseniz sevinirim.
ben bunu C kullanarak çözdüm. elimizdeki TAG'ı alıp and ve or işlemine sokarak bunu gerçekleştirebiliyoruz. Kimse cavap yazmadığına göre sanırım bunu açıklamam arkadaşların faydasına olacaktır. Butona bastığımızda 1 olması için, sol fare basıldığında 1 yapacak kod, sol fare bırakıldığında da 0 yapacak kod aşağıdadır. Örnek olarak vereceğimiz TAG 32 bit ve bit 0.0 dan 3.7 ye kadar diye kabul edelim. TAG adımız da myTag olsun. Butona bastığımızda 1 ve sıfır yapacağımız biti de 2.5 oılarak örnekleyelim. Buna göre:
Bu biti 1 yapmak için kodumuz
(press left içindeki C kodumuz)
Elimde 32 bitlik bir TAG var. Butona bastığımda bu TAG içindeki bir bitin setlenmesini/resetlenmesini istiyorum (mesela 27. bit) bunu nasıl yapabilirim?
bunu VB veya C ile de yapabiliriz. Yönetimi bilen var mı yoksa illa da code mu gerekli, bunu yapabilecek kodu yazıp buraya koyabilirseniz sevinirim.
ben bunu C kullanarak çözdüm. elimizdeki TAG'ı alıp and ve or işlemine sokarak bunu gerçekleştirebiliyoruz. Kimse cavap yazmadığına göre sanırım bunu açıklamam arkadaşların faydasına olacaktır. Butona bastığımızda 1 olması için, sol fare basıldığında 1 yapacak kod, sol fare bırakıldığında da 0 yapacak kod aşağıdadır. Örnek olarak vereceğimiz TAG 32 bit ve bit 0.0 dan 3.7 ye kadar diye kabul edelim. TAG adımız da myTag olsun. Butona bastığımızda 1 ve sıfır yapacağımız biti de 2.5 oılarak örnekleyelim. Buna göre:
Bu biti 1 yapmak için kodumuz
(press left içindeki C kodumuz)
Kod:
{
unsigned long int a; //değişiklik yapacağımız 32 bitlik TAG'ı depolayacağımız değişken
a = GetTagDouble("myTag"); //TAG'ımızı a değişkenine atıyoruz
SetTagDouble("myTag",a|0x00000200); //| işareti OR anlamındadır. Aldığımız TAG da sadece 2.5 biti 1 olmaya zorlanır
// ve diğer bitlerin konumlarında değişiklik yapılmaz. 0x hexadecimal demektir.
//SetTagDouble ile de TAG'ımıza OR işlemi sonucunu atarız.
}
İlgili biti 0 yapmak içinde benzer işlem uygulanır. Şöyleki:
(Release left içindeki C kodumuz)
{
unsigned long int a; //değişiklik yapacağımız 32 bitlik TAG'ı depolayacağımız değişken
a = GetTagDouble("myTag"); //TAG'ımızı a değişkenine atıyoruz
SetTagDouble("myTag",a&0xFFFFFDFF); //& işareti AND anlamındadır. Aldığımız TAG da sadece 2.5 biti 0 olmaya zorlanır
// ve diğer bitlerin konumlarında değişiklik yapılmaz
//SetTagDouble ile de TAG'ımıza AND işlemi sonucunu atarız.
}
Moderatör tarafında düzenlendi: