Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

17.02.2006, 12:41

Sollte ein "high-skilled professional" das nicht wissen? *g* :angel:

Zum Thema:
x = 0 wird vom Compiler, soweit ich weiß, wirklich mit xor übersetzt (vorausgesetzt x ist ein Integer). Man kann das aber auch einfach nachprüfen, indem man sich die Assembly mit Originalquellcode als Kommentar vom Compiler ausgeben lässt. Einfach mal in den Projekteinstellungen suchen ... das geht mit allen mir bekannten Versionen von Visual C++!

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

12

17.02.2006, 12:43

Ja sollte ich wohl egtl :-D
Wie gesagt, hab bisher in allen anderen Sprachen die ich so benutzt habe ^ genommen und es hat geklappt.. Hatte das in C++ einfach mal vorrausgesetzt.

Zitat

x = 0 wird vom Compiler, soweit ich weiß, wirklich mit xor übersetzt (vorausgesetzt x ist ein Integer). Man kann das aber auch einfach nachprüfen, indem man sich die Assembly mit Originalquellcode als Kommentar vom Compiler ausgeben lässt. Einfach mal in den Projekteinstellungen suchen ... das geht mit allen mir bekannten Versionen von Visual C++!

Ich weiß nich wie das in Assembler geregelt wird, aber die ALU im Prozessor hat ne eigene Funktion um eine 0 zu erstellen die wohl etwas schneller sein dürfte, von daher liegt es denk ich nahe, dass die auch benutzt wird.

13

18.02.2006, 23:22

das wäre ja eine sache die mich auchmal interessieren würde. ich meine wie sagt man einem pc dass wenn strom fließt es eine 1 ist und wenn nicht eine 0 ???

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

14

18.02.2006, 23:49

Das hängt mit der Logik der Bauteilansteuerung zusammen. Dabei gibt es die negative und positive Logik. Normalerweise verwendet man die positive Logik, spricht 1 == TRUE und 0 == FALSE!
Intern ist dann alles dementsprechend aufgebaut (Gatter-Bausteine). Bei negativer Logik hauptsächlich mit NPN-Transistorschaltern mit TTL-Pegeln.

@Skip
Kennst du dich mit Elektronik ein bisschen aus?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

19.02.2006, 01:29

Ich habe folgendes Programm von Visual C++ 2003 optimiert kompilieren lassen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int main()
{
    int x = 0;
    for(int i = 0; i < 1000; i++)
    {
        x += i;
    }

    return x;
}


Hier die Übersetzung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  00000 33 c0        xor     eax, eax

; 4    :    for(int i = 0; i < 1000; i++)

  00002 33 c9        xor     ecx, ecx
$L272:

; 5    :    {
; 6    :        x += i;

  00004 03 c1        add     eax, ecx
  00006 41       inc     ecx
  00007 81 f9 e8 03 00
    00       cmp     ecx, 1000      ; 000003e8H
  0000d 7c f5        jl  SHORT $L272

; 7    :    }
; 8    : 
; 9    :    return x;
; 10   : }

  0000f c3       ret     0


Also xor!

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

16

19.02.2006, 09:46

Also nochmal kurz zum Thema:

1.) Iteration ist zu 90% immer schneller, ausserdem viel weiniger Speicheraufwand.
2.) Noch besser ist das dynamische Programmierkonzept. Anstatt Das Problem vom größen Problemfaktor anzugehen geht man vom kleinsten aus. Man berechnet also erst 0!, 1!, 2! und so weiter...
Vorteil: man kann bei mehrmaligen berechnungen so was wie 32! sogar zwischenspeichern, was einen erheblichen Geschwindigkeitsgewinn bringt.
3.) Eigentlich dürfte der Geschwindkeitsgewinn scho n bei 32!.... sehr deutlich sein, um die 3 Lösungsstrategien zu unterscheiden.
4.) Wer rekursiv denken kann, soll angeblich sehr intelligent sein.... macht aber den Computer auch nicht schneller ;), das gehört aber eigentlich nicht hier rein :) musste aber mal gesagt werden

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

17

19.02.2006, 11:41

Mein Mathe Lehrer sagte mal so schön, "um Rekursion zu verstehen muss man Rekursion verstanden haben"; dass habe natürlich nur die Informatiker verstanden ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

18

19.02.2006, 15:42

Rekursion ist was feines, nur wer das mal in assembler programmiert hat und dann mal den speicheranstieg sich angeguckt hat, der weiß warum es auch seine tücken hat.
Rekursives denken ist nicht so schwer, führt nur nich so schnell zum ziel, warum also es erst versuchen?
Was es alles gibt, das ich nich brauche - Aristoteles

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

19

19.02.2006, 17:00

... weil es intelligent macht... nach einer Studie jedenfalls.... muss also heissen, allle die Faktulät rekursiv programmieren können sind intelligent ...... lassen wir das doch lieber so im Raum stehen *hust*

@Kovok,
oder der wegen so nem komischen Prof einein "pulssierenden Speicher" aufzeichnen musste, wobei eine Aufgabe mit Rekursion schon mehr als ein Blatt verschlinkt

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

19.02.2006, 22:06

Rekursion ist auf jeden Fall kompakter. Dass sie "intelligent machen" soll, könnte man sich dadurch erklären, dass man mit ihr lernt, ein Problem so lange aufzuteilen, bis man an einer sehr einfach zu lösenden elementaren Aufgabe angekommen ist. Ein gutes Beispiel dafür sind die "Türme von Hanoi", die man rekursiv sehr schön lösen kann.

Werbeanzeige