Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mal 2(langzahlen)??? (https://www.delphipraxis.net/20033-mal-2-langzahlen.html)

heiopei 12. Apr 2004 20:14


Mal 2(langzahlen)???
 
abend,
ich hab mir das grundgerüst für rechnen mit langen zahlen geschrieben(also langzahlarithmetik; die ziffern der zahlen werden in arrays gespeichert; +, -, div 2 und anzeigen kann ich bereits)
ich möchte nun eine solche zahl mit2 multiplizieren:

division durch 2 realisiere ich so:

Delphi-Quellcode:
...
type ziffern = array[0..100] of Word;
...

function durch2(zahl:ziffern): ziffern;
var
  hilf, uebertrag, i: integer;
begin
  for i := 100 to 0 do
  begin
    hilf := a[i] + (10 * uebertrag);     //10 = die basis
    uebertrag := a[i] and 1;
    a[i] := hilf shr 1;
  end;
end;
wie kann ich nun die multiplikation mit 2 durchführen?
(ich weiss nur, das es mit shl durchgeführt werden muss!!!)

wer die funktion oben nich ganz versteht, dem kann ich auch noch ein bsp geben(bin jetz nur zu faul zu schreiben :-) )

danke für hilfe,
heiopei

[edit=sakura] [delphi]-Tags eingefügt. Mfg, sakura[/edit]
[edit=Admin]BBCodes aktiviert. :mrgreen: Mfg, Daniel[/edit]

Mirilin 12. Apr 2004 20:50

Re: Mal 2(langzahlen)???
 
:hi:

Als Alternative :
Zahl * 2 = Zahl + Zahl


mfg Tobias

heiopei 13. Apr 2004 13:50

Re: Mal 2(langzahlen)???
 
hallo mirlin,
diese lösung hatte ich mir auch schon überlegt!!
aber es muss irgendwie auch mit bitweisem verschieben und übertrag gehn,
da soweit ich weiss, dies schneller geht.

es muss doch irgendeine umkehrfunktion führ die oben beschriebene division
durch 2 geben!!

danke für hilfe
heiopei

Chewie 13. Apr 2004 13:52

Re: Mal 2(langzahlen)???
 
Eine Verschiebung um 1 Bit nach rechts entspricht einer Multiplikation mit 2.

heiopei 13. Apr 2004 13:56

Re: Mal 2(langzahlen)???
 
hallo chewie,
ich weiss(geht mit shl 1)aber da is kein übertrag bei!!!

tschüss,
heiopei

atreju2oo0 13. Apr 2004 14:33

Re: Mal 2(langzahlen)???
 
Ich weiß ja nicht wozu du das brauchst, aber wenn Du wirklich mit "großen" Zahlen rechnen willst dann ist dein Ansatz
in my mind schlecht gewählt!
Du kannst ja am Ende nur mit 2 multiplizieren und dividieren! Wenn es mit jeder Zahl gehen soll, dann musst du die schriftliche multiplikation und Division nachbauen und das ganze als "TextFile" deklarieren!
Aber vielleicht reicht ja auch die 2... Mehr weiß der Rechner eh nicht... :-D

heiopei 13. Apr 2004 14:40

Re: Mal 2(langzahlen)???
 
hallo,
bis jetzt benötige ich nicht mehr als *2 und /2.
außerdem bin ich schon fast fertig mit durch mal rechnen
allgemein!!!
aber *2 muss irgendiwe schneller sein

tschüss
heiopei

atreju2oo0 13. Apr 2004 14:51

Re: Mal 2(langzahlen)???
 
:thuimb: Das ist natürlich noch besser...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz