Hallo,
da ich hier schon in einigen Antworten ein tiefgreifendes Verständnis für Zahlen und Gesetzmäßigkeiten beobachten konnte, setlle ich mal ein Problem zur Lösung.
Ich brauche eine Funktion, die mir einen Zahlenüberlauf realisiert bzw. aus einer Zahl die Zahl macht die entstanden wäre, wenn es einen Überlauf gegeben hätte. Der Wertebereich sollte z.B. von 0 bis 359 gehen (ganze Zahlen), obwohl es ein vorzeichenbehafteter 32bit-integer ist (ein 32bit-Überlauf muß nicht berücksichtigt sein, so groß werden die "Eingangszahlen" nicht).
Das ganze würde natürlich mit Modulo gehen aber der steht nicht zur Verfügung. Ich habe zwar schon mal einen Modulo selber programmiert aber der war relativ ineffizient (ich muß um jeden Prozessortakt ringen). Ich hoffe nun, es gibt eine effizientere Lösung, vielleicht eine auf Bit-Ebene, die ich nicht sehe.
An schnellen Befehlen, die in Frage kommen, stehen zur Verfügung:
- die vier Grundrechenarten
- bitweise and or xor not
- shift links und rechts
- Inkrementieren und Dekrementieren (hat aber keinen Rückgabewert, sondert ändert die Variable am Speicherort)
- Betragsbildung
- if ... else ... endif
Der Syntax, den ich verwende, soll weitestgehend BASIC entsprechen (was ich kaum kenne), ist aber was Spezielles mit vielen hardwarespezifischen Befehlen.
Die Suchmaschinen haben mir nicht viel geholfen, da "Modulo" häufig erwähnt wird, wenn es verwendet wird und google das gar mit dem Wort Mod assoziiert, was Unmengen Suchergebnisse zu Modifikationen liefert.