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
Zitat von »"David Scherfgen"«
Mit ein paar anderen Tricks kann man auch Divisionen durch beliebige (vorher bekannte) Zahlen hinkriegen, ohne wirklich eine Division zu machen Smile
Zitat von »"drakon"«
Zitat von »"David Scherfgen"«
Mit ein paar anderen Tricks kann man auch Divisionen durch beliebige (vorher bekannte) Zahlen hinkriegen, ohne wirklich eine Division zu machen Smile
Wie aufwendig ist das? - Habe es mal probiert, bin aber so auf die
schnelle nicht drauf gekommen, wie das geht... :roll:
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> int main() { int x = 0; std::cin >> x; return x / 3; } |
Quellcode |
|
1 2 3 4 5 6 |
mov ecx, DWORD PTR _x$[esp+4] mov eax, 1431655766 ; 55555556H imul ecx mov eax, edx shr eax, 31 ; 0000001fH add eax, edx |
Administrator
C-/C++-Quelltext |
|
1 |
x / 10; |
C-/C++-Quelltext |
|
1 |
(x * 3277) >> 15; |
Administrator
Zitat von »"David Scherfgen"«
Macht das wirklich *jeder* Compiler?
Zudem geht es hier ja mehr darum, wie man sowas anstellen kann. Das ist doch ein interessantes Thema. Und wenn man selber mal Assembler-Code schreiben darf, dann ist es sehr hilfreich sowas zu wissen.
Zitat von »"dot"«
Zitat von »"David Scherfgen"«
Macht das wirklich *jeder* Compiler?
Zudem geht es hier ja mehr darum, wie man sowas anstellen kann. Das ist doch ein interessantes Thema. Und wenn man selber mal Assembler-Code schreiben darf, dann ist es sehr hilfreich sowas zu wissen.
Hehe, klar und das will ich auch nicht bestreiten. Ich wollte nur verhindern dass jetzt jeder der das hier liest denkt, dass er sein Programm optimieren kann indem er auf Divisionsoperatoren verzichtet
Zitat von »"David_pb"«
Das stimmt so nicht ganz. Bei Divisionen von Fließkommazahlen kann man deutlich an Geschwindigkeit gewinnen wenn man statt zu dividieren, multipliziert! :p
C-/C++-Quelltext |
|
1 2 3 4 |
void setPress(bool stat){ if (stat) PORTB |= (1<<PB2); else PORTB &= ~(1<<PB2); } |
Werbeanzeige