;Hazırlayan: Feragat
- Bitwise Iidentifiers (Bitsel Tanımlar)-
Tanımlar: $isbit - $biton - $bitoff - $and - $or - $xor - $not
Bitsel(Bitwise) işlemler, sayıların binary değerlerinin görülmesinde ve karşılaştırılmasında kullanılan matematiksel işlemlerdir.
Binary değerleri sayıları ikilik taban sisteminde yazmanın farklı bir yoludur.
$base kullanılarak, sayılar 10'luk sistemden(Normal sayma sistemi), binary'e dönüştürülebilir.
.::: $isbit Tanımı :::.
-mirc.chm (mirc yardım) dosyasındaki anlatımı-
$isbit(A,N)
Returns 1 if the Nth bit in number A is turned on.
Kullanımı: $isbit(Sayı,BitNumarası)
Açıklama: Sonuç 1 dönerse 2. Sayıda belirtilen bit numarası açıktır(1). Eğer 0 dönerse kapalı(0).
Örnek:
//echo –a $isbit(5,1) - 1
Neden bir döndüğünü görebilmek için öncelikle 5’in binary değerini buluyoruz ($base(5,10,2,8))
5 = 00000101
$isbit(5,1) yaptığımızda 5 binary değerinin 1. Bit’ini (1'ler basamağı olan en sondakini) temsil etmiş oluruz ve görüldüğü gibi 1. Bit 1’e eşit ve sonuç 1 döndü.
//echo -a $isbit(5,2) - 0
Burada 2. Bit'i sorguladı ve 2. Bit 0'a eşit olduğu için sonuç 0 döndü.
//echo -a $isbit(5,3) - 1
3. Bit 1'e eşit olduğu için 1 döndü.
Sonuç:
5 = 00000101 Binary değerinde 5,1 ve 5,3 sorgusunun dönmesinin sebebi 1.bit(1'ler basamağının) ve 3.bit(yüzler basamağının)'in 1 e eşit olmasıdır.
Kısa bir Örnek:
13 = 00001101 Burada sadece $isbit(13,1) - $isbit(13,3) - $isbit(13,4) sorguları 1 dönecektir.
.::: $biton Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$biton(A,N)
Returns the A value with the Nth bit turned on.
Kullanımı: $biton(Onluk Sayı, N)
Açıklama: N'inci bit numarasını açar.
Örnek: //echo -a $biton(5,2)
5 = 00000101
Sağdan 2. bit'i açar (0 yani kapalı bit, açıldı ve 1 değerini aldı.)
Sonuç: 7 = 00000111
.::: $bitoff Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$bitoff(A,N)
Returns the A value with the Nth bit turned off.
Kullanımı: $bitoff(Onluk Sayı, N)
Açıklama: N'inci bit numarasını kapatır.
Örnek: //echo -a $bitoff(5,3)
5 = 00000101
Sağdan 3. bit'i kapadı. (1 yani açık olan bit kapandı ve 0 oldu.)
Sonuç: 1 = 00000001
.::: $and Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$and(A,B)
Returns A binary and B.
Kullanımı: $and(Sayı 1, Sayı 2)
Açıklama:
Belirtilen rakamların binary değerlerini baz alarak sayıları kıyaslar ve bit'lere işlemler yaparak sonuç verir.
Örnek:
//echo -a $and(11,12)
Binary değerleri:
11 = 00001011
12 = 00001100
-
11 = 0000 1 0 1 1
12 = 0000 1 1 0 0
Burada alt alta basamakları sıraladık, alt alta aynı olan rakamlar olduğu gibi kalıyor. Bir birinden farklı olan rakamlar
Sıfır[0]’a dönüşüyor ve sonuç ortaya çıkıyor.
Sonuç: 8 (00001000) Binary’e dönüştürüp kontrol edebiliriz. = //echo -a $base(00001000,2,10) -: 8
Küçük bir örnek daha:
//echo -a $and(5,6)
Binary Değerleri:
5 = 00000101
6 = 00000110
Sonuç: 4 (00000100)
5 = 00000 1 0 1
6 = 00000 1 1 0
Son 3 Bit'in Soldan 1. haneleri alt alta 1 ve 1, bu olduğu gibi kalıyor çünkü aynı. 1 x 1 = 1
Soldan 2. haneleri alt alta 0 ve 1, burada 0, 1'ile çarpılıyor (bit kapanıyor) ve Sıfır[0]'a dönüştürüyor. 0 x 1 = 0
Soldan 3. haneleri alt alta 1 ve 0, burda da yine aynı şekilde 0, 1'ile çarpılıyor ve sonuç: 100 oluyor. 1 x 0 = 0
Sonuç: 4 (00000100)
.::: $and Tanımı İle İlgili Ek Bilgi: :::.
$and tanımı ile ilgili pek bahsedilmemiş bir fonksiyon da if koşulunda bulunuyor.
if (N1 & N2) : Eğer
N1 ve
N2 değeri
$and tanımında
Sıfır[0] dışında bir sonuç dönerse koşul çalışır.
Örnek:
Koşul;
Kod:
//if (9 & 10) { echo -a Sonuç: $and(9,10) } | else { echo -a Sonuç Yok }
Sonuç: 8
Örnek2:
Koşul;
Kod:
//if (7 & 8) { echo -a Sonuç: $and(7,8) } | else { echo -a Sonuç Yok }
Sonuç: Sonuç Yok
.::: $or Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$or(A,B)
Returns A binary or B
Kullanımı: $or(Sayı1,Sayı2)
Açıklama: Belirtilen rakamların binary değerlerini alt alta sıraladığımızda. $and tanımında 0'lar 1'leri 0’a dönüştürüyordu, $or tanımında ise 1'ler 0'ları 1'e dönüştürüyor.
Örnek:
//echo -a $or(5,6) :- 7
5 = 00000 1 0 1
6 = 00000 1 1 0
Son 3 Bit'in soldan 1. haneleri alt alta 1 ve 1, bunlar aynı olduğu için kalıyor. 1 x 1 = 1
Soldan 2. haneleri alt alta 0 ve 1, burada 1, 0'ı 1'e dönüştürüyor. 0 + 1 = 1
3. haneleri alt alta 1 ve 0, burada yine 1, 0'ı 1'e dönüştürüyor. 1 + 0 = 1
Sonuç: 7 (00000111)
.::: $xor Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$xor(A,B)
Returns A binary xor B.
Kullanımı: $xor(Sayı1,Sayı2)
Açıklama: Belirtilen rakamların binary değerlerini alt alta sıraladığımızda aynı olan rakamları
Sıfır[0] a dönüştürür, Farklı olanlarıda 1'e.
Örnek: //echo -a $xor(5,6)
5 = 00000 1 0 1
6 = 00000 1 1 0
Son 3 Bit'in soldan 1. haneleri alt alta 1 ve 1, bunlar aynı olduğu için 0'a dönüştü. 1 - 1 = 0
Soldan 2. haneleri alt alta 0 ve 1, bunlar birbirinden farklı olduğu için, 1'e dönüştü. 0 + 1 = 1
3. haneleri alt alta 1 ve 0, bunlarda yine birbirinden farklı olduğu için, 1'e dönüştü. 1 + 0 = 1
Sonuç: 3 (00000011)
.::: $not Tanımı :::.
mirc.chm (mirc yardım) anlatımı
$not(A)
Returns the binary not value of A.
Açıklama: 4 bayt'lık(32 bit) maksimum değer olan 11111111111111111111111111111111 yada bunun onluk değeri olan 4294967295 sayıları ile kıyaslama yapar ve sonucu verir.
Kullanımı: $not(Sayı)
Onluk tabandaki değere yaptığı işlem ve sonucu:
Örnek: //echo –a $not(6) -: 4294967289
Baz alınan onluk sayımız: 4294967295
$not(6) tanımından çıkan sonucumuz: 4294967289
İşlem: 4294967295 – 6 = 4294967289
32 bit maksimum değer ile yaptığı işlem ve sonucu:
6 rakamının 32 bit binary değeri: //echo -a $base(6,10,2,32) yani 00000000000000000000000000000110
Kıyaslamada baz alınan 32 bit maksimum sayımız:
11111111111111111111111111111111
Kıyaslanan sayımız (6'nın 32 bit binary değeri):
00000000000000000000000000000110 = $base(6,10,2,32)
Sonuç: 11111111111111111111111111111001
(0’lar 1’e dönüşüyor ve alt alta aynı olan bit'ler(1'ler) ise 0’a dönüşüyor.)
4294967295 = 11111111111111111111111111111111
6 = 00000000000000000000000000000110
4294967289 = 11111111111111111111111111111001
Not: Sonucumuzu,
$not(6) tanımından çıkan sonucu dönüştürerekte görebiliriz:
//echo -a $base(4294967289,10,2,32)
Konu ile ilgili faydalı olabilecek kaynaklar:
1-)
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
2-)
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
3-)
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
4-)
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Not: Daha farklı şekillerde/yollarla de anlatılabilirdi, rahat anlaşılabilmesi adına en basite indirgedim.
Anlatım, alıntı vs. değildir.
İyi forumlar.