PDA

Tam Sürümünü Görmek İçin : Bitlerle oynayalım biraz....


shurzan
20/08/2006, 13:15
Merhaba arkadaşlar;
Ali Çehreli hocamla geçen gün son buluşmamızda sohbetimizden etkilenerek Borland C++ Builder 6 ile bitlerin AND, OR, EXCLUSIV OR ve NOT işlemleri yapabileceğimiz ve bitleri sola ve sağa kaydırma ile bitlerin sonuçlarını görebileceğimiz küçücük bir programcık yazdım. Tabi dahada geliştirilebilir.
Bitlerle işlemlerinin sonuçlarını merak edenler için faydası olacağına inanıyorum.
Aşağıda programcığın kaynak kodları ile indirilebilecek linkini veriyorum.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Bit_Unit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
AnsiString TForm1::intTobinary(int intTo)
{
AnsiString Binary;

for(int i=0;i<=15;i++)
Binary=IntToStr((intTo>>i)&1)+Binary;


return Binary;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
CheckBox1->Enabled=true;
if((Edit1->Text!="") && (Edit2->Text!=""))
{
Label9->Caption="";
Label10->Caption=intTobinary(StrToInt(Edit1->Text));
Label11->Caption=intTobinary(StrToInt(Edit2->Text));

if((RadioButton1->Checked) && !(CheckBox1->Checked)){ //AND işlemi
Label2->Caption=IntToStr(StrToInt(Edit1->Text)& StrToInt(Edit2->Text));
Label4->Caption=intTobinary(StrToInt(Edit1->Text)& StrToInt(Edit2->Text));
Label9->Caption="------------------------------------ AND";
Label12->Caption="&&";
}
else if((RadioButton1->Checked) && (CheckBox1->Checked))
{ //NAND işlemi
Label2->Caption=IntToStr(~(StrToInt(Edit1->Text)& StrToInt(Edit2->Text)));
Label4->Caption=intTobinary(~(StrToInt(Edit1->Text)& StrToInt(Edit2->Text)));
Label9->Caption="------------------------------------ NAND";
Label12->Caption="~&&";
}

if((RadioButton2->Checked) && !(CheckBox1->Checked)){ //OR işlemi
Label2->Caption=IntToStr(StrToInt(Edit1->Text) | StrToInt(Edit2->Text));
Label4->Caption=intTobinary(StrToInt(Edit1->Text) | StrToInt(Edit2->Text));
Label9->Caption="------------------------------------ OR";
Label12->Caption="|";
}
else if((RadioButton2->Checked) && (CheckBox1->Checked))
{ //NOR işlemi
Label2->Caption=IntToStr(~(StrToInt(Edit1->Text)| StrToInt(Edit2->Text)));
Label4->Caption=intTobinary(~(StrToInt(Edit1->Text)| StrToInt(Edit2->Text)));
Label9->Caption="------------------------------------ NOR";
Label12->Caption="~|";
}


if((RadioButton3->Checked) && !(CheckBox1->Checked)){ //EXCLUSIVE OR işlemi
Label2->Caption=IntToStr(StrToInt(Edit1->Text)^ StrToInt(Edit2->Text));
Label4->Caption=intTobinary(StrToInt(Edit1->Text) ^ StrToInt(Edit2->Text));
Label9->Caption="----------------------------------- EXCLUSIVE OR";
Label12->Caption="^";
}
else if((RadioButton3->Checked) && (CheckBox1->Checked))
{
Label2->Caption=IntToStr(~(StrToInt(Edit1->Text)^StrToInt(Edit2->Text)));
Label4->Caption=intTobinary(~(StrToInt(Edit1->Text)^StrToInt(Edit2->Text)));
Label9->Caption="------------------------------------ EXCLUSIVE NOR";
Label12->Caption="~^";
}
}
else ShowMessage("Lütfen kutuları boş bırakmayınız");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::RadioButton4Click(TObject *Sender)
{
CheckBox1->Enabled=false;
CheckBox1->Checked=false;


if((Edit1->Text!="") && (Edit2->Text!=""))
{
Label9->Caption="";
Label10->Caption=intTobinary(StrToInt(Edit1->Text));
Label11->Caption=Edit2->Text;

Label2->Caption= IntToStr(StrToInt(Edit1->Text) << StrToInt(Edit2->Text));
Label4->Caption= intTobinary(StrToInt(Edit1->Text) << StrToInt(Edit2->Text));
Label9->Caption="------------------------------------ Sola kaydırma";
Label12->Caption="<<";
}

else ShowMessage("Lütfen kutuları boş bırakmayınız");

}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton5Click(TObject *Sender)
{
CheckBox1->Enabled=false;
CheckBox1->Checked=false;

if((Edit1->Text!="") && (Edit2->Text!=""))
{
Label9->Caption="";
Label10->Caption=intTobinary(StrToInt(Edit1->Text));
Label11->Caption=Edit2->Text;

Label2->Caption= IntToStr(StrToInt(Edit1->Text) >> StrToInt(Edit2->Text));
Label4->Caption= intTobinary(StrToInt(Edit1->Text) >> StrToInt(Edit2->Text));
Label9->Caption="------------------------------------ Sağa kaydırma";
Label12->Caption=">>";
}

else ShowMessage("Lütfen kutuları boş bırakmayınız");

}
//---------------------------------------------------------------------------


Mr_MOON
20/08/2006, 19:25
Bir miktar açıklama ile makaleler bölümüne yazılsa daha iyi olurdu.
Genede güzel çalışma. Teşekkürler.