Mobil Programlama

iOS

DERS PROGRAMI
iOS 201 Ders Programı

Öteleme Operatörleri

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

 

Öteleme operatörlerinde kullanılacak olan operandların int türünde olması gerekir. Eğer değilse otomatik olarak int türüne dönüştürülür.

 

ÖRNEKLER:

onluk sistem                ikilik sistem (int)

6                     00000000 00000110

 

6 << 2 işlemi uygulanırsa sonuç: 00000000 00011000 (6 sayısı, bitleri sola doğru 2’şer kaydırılarak 24 sayısına dönüşmüştür.)

 

onluk sistem                ikilik sistem (int)

314                 00000000 00111010

314 >> 3 işlemi uygulanırsa sonuç: 00000000 00100111 (314 sayısı 39 sayısına dönüşmüştür.)

 

Aşağıdaki programda bu operatörlerle ilgili örnek ifadeler kullanılmıştır:

 

#import <Foundation/Foundation.h>
 
int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    NSLog(@"\n32 << 4=%i \t 87 >> 2 =%i \n25556 >> 6= %i\t -345 >> 5 =%i \n", 32 << 4, 87 >>2,  25556 >> 6, -345 >> 5) ;
}

 

 

SONUÇ:

 

Sola doğru öteleme, ötelemenin uygulandığı sayıyı 2’nin kuvvetiyle çarpmaya eşdeğerdir. Örneğin; a << b ifadesi a * 2b ifadesine denktir. 

Negatif olmayan sayılarda, sağa öteleme ise, 2’nin kuvvetine bölmeye eşdeğerdir. a >> b ifadesi ile a / 2b ifadeleri birbirine denktir.

Aşağıdaki program bu denklik konusunda bir örnektir:

 

#import <Foundation/Foundation.h>
#include <math.h>
 
int main(int argc, char* argv[]
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    NSLog(@"\n5<<4=% i \t 5*2^4=% i \n", 5<< 4, (int)(5 * pow((double) 2, (double)4))) ;
    NSLog(@"\n720>>3=%i \t720/2^3= %i \n", 720>>3, (int)(720 / pow((double) 2, (double)3))) ;
}

 

 

PROGRAMIN ÇIKTISI:

 

5 * 24 ifadesindeki üs alma işlemi için C’de özel bir sembol yoktur. Üs alma, C kütüphanesindeki pow (a, b) fonksiyonu yardımı ile sağlanabilinir.

pow(a ,b) fonksiyonu ab işlemini yapmaktadır. Burada a ve b double türünde olup, sonuç da double türdedir. O nedenle ifadelerde sonucu tamsayı yapmak için (int) cast operatörü kullanılmıştır. cast operatörünün önceliği ifadedeki diğer operatörlerden üstün olduğu için 5 * pow((double)2, (double)4) ifadesi ayrıca paranteze alınarak,

(int)(5 * pow((double)2, (double)4))

şeklinde yazılmıştır.