İki 32bit sayıyı çarpmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

İki 32bit sayıyı çarpmak

Mesaj gönderen sadettinpolat »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
A, B: Cardinal;
C: int64;
begin
A:=HIGH(Cardinal);
B:=HIGH(Cardinal);
C := A * B;
Caption := IntToStr(C);
end;
sonuç 1 çıkıyor :)
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

İyi yakalamışsın :lol: da atladığın bir nokta var. Cardinal 4 milyar küsürlük bir sayı veriyor. Yani Unsigned bir değer. Bunun gösterimi de $FFFFFFFF. Yani Integer dilinde -1.

Sen -1 ile -1 i çarptın ve sonuç tabii ki de +1. :D

İnanmazsan CPU dump a bak. :D

Kod: Tümünü seç

or ecx,-1
or ebx,-1
mov eax,ecx
imul ebx
Eğer 64 bitlik Unsigned bir tipe bunları koyabilseydin istediğin olacaktı. Maalesef Int64 Signed bir tip ve Delphi unsigned 64 bit bir tipe sahip değil.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

okul zamanında sınav sorusuydu $FFFF ile $FFFF sayılarını toplayıp çarpmak.... bizde çok akıllıyız ya bulduk hocanın açığını, sayıları atayıp dword değişkenlere işlemleri yaptırdık. hocanın ahı tuttu galiba şu an tv de de
kutsi - sana ne adlı şarkı çalıyor. sözler aynen şöyle :(
Allahın sopası yok ki gökten indirsin
Geldin mi sözüme sürüne sürüne

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

Int32x32To64, UInt32x32To64 diye bazı apiler varmış...
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla