Bu bölümde c programlama dilinde Bitsel kaydırma operatörleri tartışılacaktır. Bitsel kaydırma operatörü, programın gereksinimine göre ikili bitleri sola veya sağa kaydırmak için kullanılır.
Kaydırma operatörleri, bitlerin kaydırma konumuna bağlı olarak iki türe ayrılır.
- Sola Kaydırma Operatörü
- Sağa Kaydırma Operatörü
Sola Kaydırma Operatörü
Sola kaydırma operatörü, ikili bitler üzerinde işlemler gerçekleştiren bir tür Bitsel kaydırma operatörüdür. Bitlerin konumunu sol tarafa kaydırmak veya hareket ettirmek ve bitleri kaydırdıktan sonra sağ tarafta oluşturulan boş alana sıfırlar eklemek için iki işlenen gerektiren ikili bir operatördür.
Sözdizimi
var_name << no_of_position
Yukarıdaki sözdiziminde var_name, sola kaydırmanın (<<) operation is to be performed shift the binary bits at left side. and no_of_position variable represents number of placed or shifted in other words, operator shifts first operand on side by defined second operand.< p>
Örneğin, num tamsayı değişkeninin değeri 22'dir ve ikili biçimi 10110'dur. Şimdi ikili bitler 2'yi kaydırmak için sola kaydırma operatörünü kullanıyoruz, num = num << 2, num = num * (2)'ye eşittir ^2). Ve num'un yeni değeri 22* (2 ^ 2) = 88'dir, bu da 1011000 ikili formuna eşittir.
Örnek 1: C'de Sola Kaydırma operatörünün kullanımını gösteren program
#include int main () { // declare local variable int num; printf (' Enter a positive number: '); scanf (' %d', &num); // use left shift operator to shift the bits num = (num << 2); // It shifts two bits at the left side printf (' After shifting the binary bits to the left side. '); printf (' The new value of the variable num = %d', num); return 0; }
Çıktı
Enter a positive number: 25 After shifting the binary bits to the left side. The new value of the variable num = 100
Örnek 2: C'nin imzasız int verilerinde Sola Kaydırma operatörünü kullanan program
#include int main () { // declare local variable unsigned int num = 0xff; // use left shift operator to shift the bits num = (num << 2); printf (' After shifting the binary bits to the left side. '); printf (' The new value of the unsigned variable num = %d', num); return 0; }
Çıktı
After shifting the binary bits to the left side. The new value of the unsigned variable num = 1020
Örnek 3: Sola kaydırma operatörünü gerçekleştirmek için kullanıcıdan pozitif sayıyı girecek program
#include int main () { // declare local variable int num, bit; printf (' Enter a positive number: '); scanf (' %d', &num); printf (' No. of binary bits shifted to the left side: '); scanf (' %d', &bit); // use left shift operator to shift the bits num = (num << bit); printf (' After shifting the bits to the left side. '); printf (' The new value of the num = %d', num); return 0; }
Çıktı
Enter a positive number: 40 No. of binary bits shifted to the left side: 4 After shifting the bits to the left side. The new value of the num = 640
Yukarıdaki örnekte kullanıcı tanımlı pozitif sayı olan 40'ın ikili biti 101000'dir. Bundan sonra ikili bitleri sola kaydıracak sayı olarak 4'ü alıyoruz. Daha sonra, sola kaydırma operatörü 4 ikili biti sol tarafa kaydırır ve ardından sağ tarafta, sağ tarafa 4 sıfırla doldurulan veya eklenen, 1010000000 ikili değerini döndüren bir alan yaratılır; bu, şuna eşdeğerdir: ondalık sayı 640.
Sağa kaydırma operatörü
Sağa kaydırma operatörü, sağ taraftaki bitleri hareket ettirmek için kullanılan bir tür bit bazında kaydırma operatörüdür ve çift (>>) ok sembolüyle temsil edilir. Sola kaydırma operatörü gibi, Sağa kaydırma operatörü de bitleri sağ tarafa kaydırmak ve ardından bitleri kaydırdıktan sonra sol tarafta oluşturulan boş alana sıfırları eklemek için iki işlenene ihtiyaç duyar.
Sözdizimi
var_name >> no_of_position
Yukarıdaki sözdiziminde var_name, ikili bitleri sağ tarafa kaydırmak için sağa kaydırma (>>) işleminin gerçekleştirileceği tamsayı değişkenini temsil eder. Ve no_of_position değişkeni sağ tarafa yerleştirilecek veya kaydırılacak bit sayısını temsil eder. Başka bir deyişle sağa kaydırma operatörü, ikinci işlenenin toplam bit sayısını tanımlayarak birinci işlenenin ikili bitlerini sağ tarafa kaydırır.
Örnek 1: C'de Sağa Kaydırma operatörünün kullanımını gösteren program
#include int main () { // declare local variable int num; printf (' Enter a positive number: '); scanf (' %d', &num); // use right shift operator to shift the bits num = (num >> 2); // It shifts two bits at the right side printf (' After shifting the binary bits to the right side. '); printf (' The new value of the variable num = %d', num); return 0; }
Çıktı
Enter a positive number: 25 After shifting the binary bits to the right side. The new value of the variable num = 6
Örnek 2: C'nin imzasız int verilerinde Sağa Kaydırma operatörünü kullanan program
#include int main () { // declare local variable unsigned int num = 0xff; // use right shift operator to shift the bits num = (num >> 2); printf (' After shifting the binary bits to the right side. '); printf (' The new value of the unsigned variable num = %d', num); return 0; }
Çıktı
After shifting the binary bits to the right side. The new value of the unsigned variable num = 63
Örnek 3: Sağa kaydırma operatörünü gerçekleştirmek için kullanıcıdan pozitif sayıyı girecek program
#include int main () { // declare local variable int num, bit; printf (' Enter a positive number: '); scanf (' %d', &num); printf (' No. of binary bits shifted to the right side: '); scanf (' %d', &bit); // use right shift operator to shift the bits num = (num >> bit); printf (' After using the right shift operator to shift the bits at the right side. '); printf (' New value of the num = %d', num); return 0; }
Çıktı
Enter a positive number: 40 No. of binary bits shifted to the right side: 4 After using the right shift operator to shift the bits to the right. The new value of the num = 2
)>