AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Variablen vertauschen

Ein Thema von HAF4ever · begonnen am 29. Jan 2004 · letzter Beitrag vom 26. Mai 2004
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#1

2 Variablen vertauschen

  Alt 29. Jan 2004, 16:56
Ich hab mir mal den Kopf darüber zerbrochen warum es nötig sein muss beim Tauschen der Werte zweier Variablen eine Hilfsvariable heranzuziehen.
z.B.:
Code:
h:=x;
x:=y;
y:=h;
ich hab ein wenig herumgecoded und bin schließlich auf einen grünen zweig gekommen.
hier der code:
Code:
x:=x xor y;
y:=x xor y;
x:=x xor y;
gtg, no time, can't talk, get watched, .....
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: 2 Variablen vertauschen

  Alt 29. Jan 2004, 17:21
Zitat von HAF4ever:
ich hab ein wenig herumgecoded und bin schließlich auf einen grünen zweig gekommen
Nur wo ist der wirkliche Vorteil Der Computer muss dreimal rechnen Zeitaufwand. In Assembler kommt Deine Lösung auf den folgenden Ansatz (X, Y sind vom Typ Integer):
Delphi-Quellcode:
  asm
    mov EAX, Y
    xor X, EAX
    mov EAX, X
    xor Y, EAX
    mov EAX, Y
    xor X, EAX
  end;
Dann doch lieber gleich so
Delphi-Quellcode:
  asm
    mov EAX, Y
    mov EBX, X
    mov Y, EBX
    mov X, EAX
  end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#3

Re: 2 Variablen vertauschen

  Alt 29. Jan 2004, 17:26
Delphi-Quellcode:
Code:
x:=x xor y;
y:=x xor y;
x:=x xor y;
Das erinnert mich an die C-Programmierer, die auch in einer einzigen Zeile gleich ganz viel codieren können.
Damit gewinnst du vielleicht 1 Nanosekunde Ausführungszeit, dafür kann den Code in zwei Wochen keiner mehr verstehen.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: 2 Variablen vertauschen

  Alt 29. Jan 2004, 17:59
Zitat von sakura:
wo ist der wirkliche Vorteil [..] In Assembler[..]
Hallo sakura,

gerade bei der Arbeit mit der begrenzten Anzahl von Registern hat sich dieser alte ASM-Trick schon häufig bewähren können, ohne zusätzlich mit dem Stack oder einer Variablen arbeiten zu müssen, falls zwei GP-Register ausgetauscht werden sollten (hier EAX und EBX), was wesentlich (zeit-)aufwendiger wäre:
Code:
xor  EAX, EBX
xor  EBX, EAX
xor  EAX, EBX
gruß, choose
  Mit Zitat antworten Zitat
Neg

Registriert seit: 16. Jan 2004
Ort: Berlin
63 Beiträge
 
Delphi 5 Professional
 
#5

Re: 2 Variablen vertauschen

  Alt 29. Jan 2004, 21:58
Der Kontrast zwischen dieser Lösung und deiner Signatur könnte kaum größer sein...
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: 2 Variablen vertauschen

  Alt 26. Mai 2004, 16:58
könnte das einer für mich nichtassembler mal erklären?

was soll dieses y:= x xor y und so?

imn voraus: ich weiss was xor ist!!!
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: 2 Variablen vertauschen

  Alt 26. Mai 2004, 17:40
Dann solltest du auch deine Frage selber beantworten können

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: 2 Variablen vertauschen

  Alt 26. Mai 2004, 18:50
hä?

das heisst für mich:

Delphi-Quellcode:
x:= x oder y;
y:= x oder y;
x:= x oder y;
also oder heisst jetzt xor
aber wqarum sollte das vertauschen;

zb x:=x xor y, woher soller wissen ob jetzt x:=x oder x:=y?????
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#9

Re: 2 Variablen vertauschen

  Alt 26. Mai 2004, 18:57
xor ist kein normales oder (or), sondern ein exklusives oder (macht nen unterschied )
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: 2 Variablen vertauschen

  Alt 26. Mai 2004, 18:58
Mal dir einfach die Bitmuster auf ein Blatt und vollzieh den Tauschvorgang nach.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz