mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Modulo mit Shift in C, wie?


Autor: Giovanni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte den Mod von einem Integer % 360 mit Shifts berechnen. Und 
zwar weiß ich nicht wie man sowas mit Shifts machen kann.

Der normale '%' Operator braucht zu lange bei den großen Zahlen.

Vielen Dank im Voraus.

Giovanni

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Welche CPU, wieviel Bit ist der Integer? Was fuer weitere Rosinen 
stecken in deiner Nase, die man einzeln rausziehen muss?

Gruss
WK

Autor: Giovanni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> Moin,
>
> Welche CPU, wieviel Bit ist der Integer? Was fuer weitere Rosinen
> stecken in deiner Nase, die man einzeln rausziehen muss?
>
> Gruss
> WK

Für einen STM32, int 4Bit.

Autor: Mark B. (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Giovanni schrieb:
> Für einen STM32, int 4Bit.

Du meinst wohl 4 Byte. Oder auf gut deutsch 32 Bit.

Autor: Giovanni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark B. schrieb:
> Giovanni schrieb:
>> Für einen STM32, int 4Bit.
>
> Du meinst wohl 4 Byte. Oder auf gut deutsch 32 Bit.

Naturlich :D

Autor: Tippgeber (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Giovanni schrieb:
> Der normale '%' Operator braucht zu lange bei den großen Zahlen.

Wofür braucht der für 32 bit auf einem STM32 in C zu lange?

Beitrag #5021517 wurde von einem Moderator gelöscht.
Autor: Thomas E. (picalic)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Giovanni schrieb:
> ich möchte den Mod von einem Integer % 360

360 ist ne blöde Zahl dafür - Teile den Kreis lieber in 512 Einheiten 
statt Grad zu benutzen, dann geht es mit einem simplen & 0x1FF.

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

OK, bei einem AVR haett's mich nicht gewundert; aber beim STM32 kann ich 
fast nicht glauben, dass es daran liegt. iirc kann der doch Division in 
Hardware; da waer's sehr verwunderlich, wenn das laenger dauern sollte 
als eine handgebastelte shifterei.

Wie kommst du drauf, dass das lange dauert? Schon mal geguckt, was der 
Compiler draus fuer Code erzeugt?

Gruss
WK

Autor: Patrick J. (ho-bit-hun-ter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

4bit 0...15 Da ist ein MOD 360 einfach ;)

Wenn sich der Wert immer nur sporadisch erhöht und relativ langsam 
erhöht, kannst Du den Wert korrigieren, wenn Er über 360 angewachsen ist 
(Wert=Wert-360).
In die andere Richtung müsste man auf 'Negativ' prüfen (höchste Bit 
gesetzt) und dann eben Wert=Wert+360 machen, bis der Wert wieder 'im 
grünen Bereich' ist.

Dafür sollten dann 9bit reichen bzw, 10bit, um das 'Negatib-Bit' nicht 
irrtümlich zu setzen.

MfG

: Bearbeitet durch User
Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Giovanni schrieb:
> Der normale '%' Operator braucht zu lange bei den großen Zahlen.

Wie wurde das festgestellt?

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Jepp. So in etwa hatte ich mir das auch vorgestellt.

Da wird irgendwas anderes klemmen...

Gruss
WK

Beitrag #5021575 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.