Delphide Matematik Fonksiyonları

Programlama10/04/2008


Delphi içerisinde, kolay uygulama geliştirme amaçlı kullanabileceğiniz bir çok method ve özellik bulunmaktadır. Bu methodlar sizleri yazmanız gereken bir çok sıkıcı koddan kurtarmaya yönelik olarak eklenmiştir. Şimdi Delphi kütüphanesinde yer olan bu fonksiyonları teker teker incelemeye başlayalım.

Aritmetik işlem yapabilmek için kütüphaneye eklenmiş, fonksiyonlardır. Matematik fonksiyonları kullanırken ondalıklı sayıların, tam sayıları kapsadığı (digit kaybı olmadığı için) unutulmamalıdır. Bu fonksiyonları çalıştırabilmeniz için math kütüphanesini uses satırına eklemeniz gerekmektedir.

Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math;

Abs(ondalıklı_sayı);

Parametre olarak girilen (parantez içerisindeki değer parametre olarak adlandırılmaktadır) reel sayının pozitif değerini hesaplamak için kullanılır. Parametre pozitif ise sayının değerini değiştirmeyecektir. Eğer negatif ise o zaman pozitif değerini geriye döndürecektir.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=StrToFloat(Edit1.Text);
Sonuc :=Abs(sayi); // Pozitife çevir.
Caption:= FloatToStr(sonuc);
end;

Fonksiyona gönderilen parametre tam sayı veya reel sayı tipli olabilir. Aynı mantıkla geriye döndürdüğü sayının tipi de yine tam sayı veya ondalıklı sayı olabilcektir.


Ceil(ondalıklı_sayı);

Parametre olarak girilen bir üst tam sayıya yuvarlatarak geriye döndürür. Dönen sayının tipi tam sayı olduğu için IntToStr tip dönüştürme fonksiyonu sayesinde kolayca yazdırılabilir.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.2;
Sonuc :=Ceil(sayi); // Ondalıklı sayıyı üste yuvarla.
Caption:= IntToStr(sonuc); // 126 yazar
end;

Aşağıda ki şekilde de kullanılabilir.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=StrToFloat(Edit1.Text);
Sonuc :=Ceil(sayi); // Editteki değeri bir üst tam sayıya yuvarla
Caption:= IntToStr(sonuc);
end;

Ceil fonksiyonu, sayıda yer alan ondalıklı kıma bakmadan bir üst tam sayıya yuvarlamak için kullanılır.


Floor(ondalıklı_sayı);

Bu fonksiyon ceil fonksiyonunun yaptığı işlevin tam tersini yapar. Yani parametre olarak girilen ondalıklı sayıyı, virgülden sonraki kısmın büyüklüğüne bakmadan bir alt tam sayıya yuvarlayacaktır. Sayının negatif veya pozitif olması önem arz etmez. Her zaman bir alt tam sayıya yuvarlama yapacaktır. ( -2.8’ i -3 olarak döndürecektir )

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.9;
Sonuc :=Floor(sayi); // Bir alt ta sayıya indir.
Caption:= IntToStr(sonuc); // 125 yazar
end;

Negatif tam sayılara örnek yapacak olursak :

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=-125.1;
Sonuc :=Floor(sayi);
Caption:= IntToStr(sonuc); // -126 yazar
end;

Floor fonksiyonu, sayıda yer alan ondalıklı kısma bakmadan bir alt tam sayıya yuvarlamak için kullanılır.


Trunc(ondalıklı_sayı);

Parametre olarak girilen ondalıklı sayının tam kısmını döndüren matematiksel bir fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.9;
Sonuc :=Trunc(sayi); // Sadece tam kısmını göster
Caption:= IntToStr(sonuc); // 125 yazar
end;

Trunc fonksiyonunda herhangi bir yuvarlatma söz konusu değildir. Negatif sayılar içinde kolaylıkla kullanılabilir. (-125.9’ u -125 olarak hesaplar) Geriye dönen değerin tipinin tam sayı olduğunu fonksiyon tanımlamasından kolayca çıkarabilirsiniz.


Frac(ondalıklı_sayı);

Parametre olarak girilen değerin ondalıklı kısmını hesaplayan bir fonksiyondur. Tanımlamaya dikkat edecek olursanız. Geriye dönen değerin tipinin ondalıklı bir sayı (extended) olduğunu görürsünüz.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Extended;
begin
Sayi :=125.756; // İsterseniz bir kontrolden değer aktarabilirsiniz
Sonuc :=Frac(sayi); // Ondalıklı kısmı al
Caption:= FloatToStr(sonuc); // 0.756 yazar
end;

Fonksiyondan geriye dönen değer ondalıklı bir sayı tipi olduğu için FloatToStr fonksiyonu ile kolayca değerini yazdırabilirsiniz.


Exp(ondalıklı_sayı);

Parametre olarak girilen sayıyı ”e” ( 22/7 ) nin üssü olarak kabul eder ve kuvvetini alır. (Şayet 2 girilirse e sayısının karesi alınır)

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Integer;
Sonuc : Extended;
begin
Sayi :=2;
Sonuc :=Exp(sayi); // e nin karesini bul
Caption:= FloatToStr(sonuc); // 7.389 yazar
end;


Int(ondalıklı_sayı);

Parametre olarak girilen değerin tam kısmını reel sayı olarak döndüren bir fonksiyondur. Sonucu herhangi bir kontrolde yazdırmak için FloatToStr tip dönüştürme fonksiyonunu kullanmalısınız. IntToStr tip dönüştürme fonksiyonu hata verecektir.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=-120.85; // Değeri kontrolden de aldırabilirsiniz.
Sonuc :=Int(sayi); // Tam kısmını al
Caption:= FloatToStr(sonuc); // -120 yazar
end;

Tekrar hatırlatmakta yarar görüyorum, bu fonksiyondan geriye dönen sayının tipi ondalıklı sayı tipidir. Bu yüzden yazdırmak için FloatToStr fonksiyonundan faydalanmalısınız.


IntPower(ondalıklı_sayı , tam_sayı);

Birinci parametre olarak girilen ondalıklı sayının, ikinci parametre ile girilen kuvvetini hesaplatmak için kullanılır. İkinci parametre olarak sadece tam sayı değeri girebilirsiniz.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Extended;
begin
Sayi :=5.2;
Sonuc :=IntPower(sayi , 2); // e nin karesini bul
Caption:= FloatToStr(sonuc); // 27.04 yazar
end;

IntPower fonksiyonundan geriye dönen sayının tipi ondalıklı olmaktadır. Bu yüzden kontrol üzerinde yazdırabilmek için FloatToStr fonksiyonundan faydalanmalısınız.


Ln(ondalıklı_sayı);

Parametre olarak girilen ondalıklı (ondalıklı sayılar tam sayıları kapsarlar, unutmayın) sayının e tabanında logaritmasını almak için kullanılır. Fonksiyondan geriye yine bir ondalıklı sayı döner.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=10;
Sonuc :=Ln(sayi); // Logesayi demektir.
Caption:= FloatToStr(sonuc); // 2.302 yazar
end;

Fonksiyondan geriye dönen değer ondalıklı sayı tipli olduğu için FloatToStr fonksiyonu kullanılarak yazdırılabilir.


Log10(ondalıklı_sayı);

Parametre olarak girilen değişkenin 10 tabanına göre logaritmasını almak için kullanılır.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=100;
Sonuc :=Log10(sayi);
Caption:= FloatToStr(sonuc); // 2 yazar
end;

Fonksiyondan geriye dönen değer ondalıklı sayı tipli olduğu için FloatToStr fonksiyonu kullanılarak yazdırılabilir.


Log2(ondalıklı_sayı);

Parametre olarak girilen değişkenin 2 tabanında logaritmasını hesaplayan bir fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=8;
Sonuc :=Log2(sayi); //Log28
Caption:= FloatToStr(sonuc); // 3 yazar
end;

Fonksiyondan geriye dönen değer ondalıklı sayı tipli olduğu için FloatToStr fonksiyonu kullanılarak yazdırılabilir.


LogN(ondalıklı_sayı , ondalıklı_sayı2);

Parametre olarak girilen değişkenin 2 tabanında logaritmasını hesaplayan bir fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=9;
Sonuc :=LogN(3,sayi); //Log39
Caption:= FloatToStr(sonuc); // 2 yazar
end;

Fonksiyondan geriye dönen değer ondalıklı sayı tipli olduğu için FloatToStr fonksiyonu kullanılarak yazdırılabilir.


Max(ondalıklı_sayı , ondalıklı_sayı2);

Parametre olarak girilen ondalıklı (veya tam sayı) sayıların en büyüğünü hesaplayan bir fonksiyondur. Dikkat edeceğiniz husus fonksiyonun sadece iki parametre aldığıdır. Yani elinizdeki üç sayının en büyüğünü bu fonksiyonla hesaplatamazsınız. (Dolaylı olarak olabilir)

Procedure TForm1.Button1Click(Sender; Object);
var
Ilk, Son : Integer;
Sonuc : Real;
begin
Ilk : 25;
Son : 5;
Sonuc :=Max(Ilk , Son); // Büyük olanını bul
Caption:= FloatToStr(sonuc); // 25 yazar
end;

Parametre olarak ondalıklı sayıda kullanabilirsiniz.


Min(ondalıklı_sayı , ondalıklı_sayı2);

Parametre olarak girilen ondalıklı (veya tam sayı) sayıların en küçüğünü hesaplayan bir fonksiyondur. Dikkat edeceğiniz husus fonksiyonun sadece iki parametre aldığıdır. Yani elinizdeki üç sayının en büyüğünü bu fonksiyonla hesaplatamazsınız. (Dolaylı olarak olabilir)

Procedure TForm1.Button1Click(Sender; Object);
var
Ilk, Son : Integer;
Sonuc : Real;
begin
Ilk : 25;
Son : 5;
Sonuc :=Min(Ilk , Son); // Küçük olanını bul
Caption:= FloatToStr(sonuc); // 5 yazar
end;

Parametre olarak ondalıklı sayıda kullanabilirsiniz.


Mudiv(Tam_Sayı , Tam_Sayı2 , Tam_Sayı3);

İlk iki parametre ile verilen tam sayıları çarpıp, üçüncü parametreye bölen matematiksel bir fonksiyondur. Fonksiyondan geriye dönen değerin tipi tam sayı olduğu için, sonuç ondalıklı olarak çıkarsa aşağı veya yukarı tam sayıya yuvarlama işlemi yapacaktır.

Procedure TForm1.Button1Click(Sender; Object);
var
Sayi, Adet, Bol, Sonuc : Integer;
begin
Sayi : 10;
Adet : 2;
Bol : 3;
Sonuc :=Muldiv(Sayi, Adet, Bol); // 10*2/3
Caption:= IntToStr(sonuc); // 7 yazar
end;

Fonksiyondan geriye dönen değer tam sayı tipli olduğu için, tip dönüştürme işlemini IntToStr fonksiyonu ile gerçekleştirebilirsiniz.


Pi:

Matematikte kullanılan pi sayısının değerini içerisinde tutabilen bir fonksiyondur. 3.1415926535897932385 sayısına eşit olan bu fonksiyon sayesinde, daireye ait alan ve çevre hesaplamalarını kolaylıkla yaptırabilirsiniz. Fonksiyon ondalıklı bir sayı barındırdığı için FloatToStr fonksiyonu kullanılarak tip dönüşüm işlemleri uygulanmalıdır.

Procedure TForm1.Button1Click(Sender; Object);
var
YariCap : Integer;
Cevre, Alan : Double;
begin
YariCap : 10;
Cevre : 2 * pi * YariCap; //çevre = 2 * pi * r
Alan := pi * YariCap * YariCap;
Label1.Caption := ‘Daire Alanı : ’+ FloatToStr(Alan);
Label2.Caption := ‘Dairenin çevresi’+FloatToStr(Cevre);
end;


Poly(Ondalıklı_Sayı , Değişken):

Programınızda polinom fonksiyon sonuçlarını hesaplatmak için kullanılır. Birinci parametre polinom fonksiyondaki değişkenin değeri, ikinci parametre ise polinom fonksiyonda kullanılacak olan kat sayıların değerini tutacak olan dizi değişkenden ibarettir.

Procedure TForm1.Button1Click(Sender; Object);
var
KatSayilar : Array of Double;
Değer, Derece, i : Integer;
Sonuc : Extended;
begin
Deger := StrToInt(InputBox(‘Hangi Değer İçin’,’Deger’,’’));
Derece := StrToInt(InputBox(‘Poinom Kaçıncı Dereceden’,’Derece’,’’));
SetLength(KatSayilar , Derece+1); // Boyutla
For I:=Low(KatSayilar) to High(KatSayilar) do
KatSayilar[i]:=StrToInt(InputBox(IntToStr(i)+’.ci Kat Sayıyı Giriniz’,’KatSayi’,’’));
Sonuc:=Poly(Deger , KatSayilar); // Polinomu hesapla
Caption := ‘Polinomun Sonucu : ’+FloatToStr(Sonuc);
end;

Fonksiyonu kullanırken dizi değişkeninizi ondalıklı sayı tanımlamaya dikkat ediniz. Programı çalıştırdıktan sonra polinomda kullanılan (y=ax2+bx) x değişkeninin değerini girmeniz istenecektir. Ardından polinom fonksiyonunuzun kaçıncı dereceden olduğunu ve katsayılarını sırası ile (olmayan bir katsayı için sıfır giriniz) girmenizi isteyecektir. Fonksiyondan geriye dönen değer ondalıklı sayı olacağı için sonucu FloatToStr fonksiyonu ile yazdırabilirsiniz.


Power(Ondalıklı_Sayı , Ondalıklı_Sayı2):

ãœst almak için Delphi’ de kullanılan bir fonksiyondur. Birinci parametre ile verilen ondalıklı sayının, ikinci parametreyle verilen kuvvetini hesaplar.

Procedure TForm1.Button1Click(Sender; Object);
var
Taban, Us : Double;
Sonuc : Extended;
begin
Taban := 4;
Ust := 3;
Sonuc := Power(Taban , Ust); // ãœst al
Caption := FloatToStr(Sonuc); // 4 * 4 * 4 = 64 yazar
end;

Taban ve üst değerleri ondalıklı sayıda olabilir. (yani 2.4’ ün 5.2’ ci kuvvetini de hesaplayabilir) Fonksiyondan geriye dönen değer ondalıklı sayı olduğu için sonucu yazdırmak için FloatToStr fonksiyonunu kullanabilirsiniz.


Round(Ondalıklı_Sayı):

Parametre ile girilen reel sayıyı ondalıklı kısımdaki değere göre, bir üst veya bir alt tam sayıya yuvarlamak için kullanılan bir fonksiyondur. Ondalıklı kısımdaki ilk rakam 5 veya daha büyük ise üstte, daha küçük ise altta yuvarlanacaktır. Fonksiyondan geriye dönen değer tam sayı tipli olacağı için, kontrol içerisinde yazdırmak için IntToStr fonksiyonunu kullanmanız yeterli olacaktır.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1001.465;
Sonuc := RoundTo(Deger , -2); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 1001.47 yazar
end;

Eğer ikinci parametre pozitif sayı ise : Bu durumdan tam kısmın en sonundan başlayarak, ikinci parametreyle belirtilen değer kadar 0 eklenir. Sonuçta yine üstte veya altta yuvarlatma işlemi uygulanacaktır.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1591.465;
Sonuc := RoundTo(Deger , 3); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 2000 yazar
end;



örnek//

Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1491.465;
Sonuc := RoundTo(Deger , 3); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 1000 yazar
end;

ãœstte ki örnekte sağdan üç rakamı 0 yapınız, aynı zamanda en son 0 yapılan rakam 5 den büyük ise bir üstte, küçük ise bir altta yuvarla denilmek istenmektedir. Biraz değişik gelebilir, ama yeterince örnek çözerseniz mantığına alışacaksınız sanırım.



Sign(ondalıklı_sayı);

Parametreye girilen değerin pozitif, sıfır veya negatif olduğunu gösterebilen bir fonksiyondur. Eğer sayı sıfırdan küçük ise -1 büyük ise +1 sıfıra eşit ise 0 değerini döndürecektir.

Sign fonksiyonundan geriye dönen değer 0, 1, -1 rakamlarından bir tanesi olacaktır. Sayının çok büyük veya küçük olması bu durumu değiştirmemektedir.

Procedure TForm1.Button1Click(Sender; Object);
var
Ilk : Double;
Sonuc : Integer;
begin
Ilk := StrToFloat(Edit1.Text);
Sonuc := Sign(Ilk);
Caption:= FloatToStr(sonuc);
end;

Yazılan kodlamada açıklanacak bir şey olmadığı (her şey açık zaten) için açıklama satırlarına gerek görülmemiştir.


SimpleRoundTo(ondalıklı_sayı , Tam_Sayı);

çalışma mantığı daha önce izah edilen RoundTo fonksiyonuna çok benzemektedir. Aralarında ki tek fark SimpleRoundTo fonksiyonunda yuvarlatma işlemi uygulanmayacağıdır. Aşağıda ki sonuçları yapacağınız örnek ile kıyaslayınız.

SipleRoundTo(1254.6543,1) - - > 2000
SipleRoundTo(1254.6543,-2) - - > 1254.65
SipleRoundTo(1254.6543,-3) - - > 1254.653


Sqr(ondalıklı_sayı);

Parametre girilen sayının karesini hesaplayabilen bir Delphi fonksiyonudur. Tam sayılar için kullanılabileceği gibi ondalıklı sayılar için sonucu hesaplayabilmektedir.

Procedure TForm1.Button1Click(Sender; Object);
var
Sonuc, Sayi : Double;
begin
Sayi := 100.2;
Sonuc := Sqr(Sayi);
Caption:= FloatToStr(sonuc); // 10040.04 yazar
end;

Kullanılan parametrenin tipi tam sayı ise bu durumda sonucu daha hızlı hesaplayacaktır.


Sqrt(ondalıklı_sayı);

Parametre girilen sayının ondalıklı sayının karekökünü hesaplayan bir fonksiyondur. Parametrenin tam sayı veya ondalıklı sayı olması önem arz etmemektedir.

Procedure TForm1.Button1Click(Sender; Object);
var
Sonuc, Sayi : Double;
begin
Sayi := 100;
Sonuc := Sqrt(Sayi); // Karekökünü hesapla
Caption:= FloatToStr(sonuc); // 10 yazar
end;

Bu fonksiyon geriye ondalıklı sayı döneceği için sonucu yazdırmak için FloatToStr fonksiyonunu kullanmalısınız.



Inc(Tam_Sayı , Tam_Sayı2);

Bu bir fonksiyon değil (prosedür), ama burada vermeyi uygun gördüm. Method birinci parametre ile girilen değişkenin (tam sayı olmak zorundadır) artıracaktır. İkinci parametrenin opsiyonel olduğunu belirtmek isterim, şayet verilmezse artım değeri 1 olarak alınacaktır.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
deger := 99;
Inc(deger); // Değişkenin değerini bir artır
Caption:= IntToStr(deger); // 100 yazar
end;

örnek//

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
deger := 99;
Inc(deger,11); // Değişkenin değerini onbir artır
Caption:= IntToStr(deger); // 110 yazar
end;

Inc metoduyla ondalıklı sayı kullanamazsınız. Eğer kullanmaya kalkarsanız Delphi sizi hata mesajı ile uyaracaktır.



Dec(Tam_Sayı , Tam_Sayı2);

Method birinci parametre ile girilen değişkenin (tam sayı olmak zorundadır) değerini ikinci parametre kadar (ikinci değişkende tam sayı olmak zorundadır) azaltacaktır. İkinci parametrenin opsiyonel olduğunu belirtmek isterim, şayet verilmezse azalma değeri 1 olarak alınacaktır.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
Deger := 100;
Dec(Deger,1); // Değişkenin değerini bir azalt
Caption:= IntToStr(Deger); // 99 yazar
end;

//örnek

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
Deger := 110;
Dec(Deger,11); // Değişkenin değerini onbir azalt
Caption:= IntToStr(Deger); // 99 yazar
end;

Dec prosedürü de sadece tam sayı değerler için kullanıldığından ondalıklı sayılar için denerseniz programınız kırılacaktır.


Div :

Bu da bir fonksiyon olmamakla beraber bu kısımda bulunmasında fayda görmekteyim. Matematiksel bölme işleminde tam bölüm değerini veren bir komuttur.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Integer;
begin
Deger := 19;
Sonuc := Deger div 4; // 4 kaç kere var
Caption:= IntToStr(Sonuc); // tam olarak 4 kere var
end;



Mod :

Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Integer;
begin
Deger := 19;
Sonuc := Deger mod 4; // kalan ne
Caption:= IntToStr(Sonuc); // 3 yazar
end;



Shl :

Değişken değerlerinin iki sayısı veya kuvvetleriyle kolayca işlem yapılabilmesini sağlayan komuttur. (C++ bilenler için >> ve <<) Yaptığı işleme gelince; solunda belirtilen sayıyla, sağında belirtilen sayıyı ikinin kuvveti olarak kabul ederek çarpar.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
Sonuc : Extended;
begin
Deger := 10;
Sonuc := Deger Shl 3; // 2^3*10=80
Caption:= FloatToStr(Sonuc); // 80 yazar
end;

Shl komutunun yaptığı işlem şudur. a:=10 shl 3 satırı a:=10*2üzeri3 ile aynı işi yapacaktır. Yani sağdaki sayıyı 2 nin üsttü olarak alacak solundaki sayıyla çarpacaktır. (C++ da 3 bit sola ötele)

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
Sonuc : Extended;
begin
Deger := 20;
Sonuc := Deger Shl 5; // 2^5*20=640
Caption:= FloatToStr(Sonuc); // 640 yazar
end;



Shr :

Değişken değerlerinin iki sayısı veya kuvvetleriyle kolayca işlem yapılabilmesini sağlayan diğer bir komuttur. (C++ bileşenleri için >> ve <<) Yaptığı işleme gelince; solunda belirtilen sayıyla, sağında belirtilen sayıyı ikinin kuvveti olarak kabul ederek böler. Belirtilen üst değeri kadar bit sağa öteleme yapar da denilebilir.

Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
Sonuc : Extended;
begin
Deger := 20;
Sonuc := Deger Shr 2; // 20/2^2=5
Caption:= FloatToStr(Sonuc); // 5 yazar
end;

sonuc:=deger shr 2 satırı sonuc:=deger/(2^2) ile aynı sonucu verecektir. Yani sağında ki sayıyı ikinin kuvveti olarak kabul edecek, solunda ki sayıya bölecektir.
Etiketler: