Bitmathe, Bitshifting, Rechnen mit Bitshift usw. mit C.

Gast #4280194
Lesenswert?
• ▲
▼
Hallo

ich möchte verstehen wie in C bzw. der Arduino IDE auf Bitebene 
manipuliert und gerechnet wird.
Während das setzen, löschen, toggeln einzelner Bits einfach ist und an 
sehr vielen Stellen auch gut nachvollziehbar erklärt oder sogar als 
Video gezeigt wird, habe ich jetzt noch kein gutes deutschsprachige 
Tutorial gefunden was die mittels  Bitshifting mögliche 
Rechenmöglichkeiten und Vorteile erklärt.

Mein Interessenbereich liegt hauptsächlich in der Praktischen Anwendung 
von 8 Bit µC (AVR) und der Sprache C bzw. der Arduino IDE.
http://playground.arduino.cc/Code/BitMath ist eigentlich schon ein guter 
Einstieg - aber eben in englisch was bei diesen Thema einen Anfänger die 
Sache leider erschwert.
Optimal wäre ein deutschsprachiges Videotutorial mit vielen 
Praxisbeispielen.

Wie geschrieben: Ich suche kein Mathematiktutorial über Boolsche Algebra 
oder Bitmanipulation in allgemeinen sondern ein Praxistutorial was sich 
schwerpunktmäßig auf C (Arduino IDE) und 8 Bit µC (AVR) bezieht.

Zweier
#4280249
Lesenswert?
• ▲
▼
Zweier schrieb:
> habe ich jetzt noch kein gutes deutschsprachige
> Tutorial gefunden was die mittels  Bitshifting mögliche
> Rechenmöglichkeiten und Vorteile erklärt.

Überlege dir einmal, was du machst wenn du eine Zahl mit dem Faktor 10 
multiplizierst bzw. mit dem Faktor 10 dividierst. Das selbe ist Bitshift 
nur dass es im Computer idR zur Basis 2 ist und nicht zur Basis 10.

Warum muss es eigentlich genau die Arduino IDE sein? Kein Interesse auf 
C zu wechseln? Damit könntest du den Mikrocontroller vollständig nutzen 
wie es dir beliebt…natürlich in den Grenzen die das Datenblatt einem 
sagt. Die Arduino IDE schränkt da noch etwas mehr ein afaik.
#4280365
Lesenswert?
• ▲
▼
Wahrscheinlich werde ich jetzt für diese Aussage gesteinigt, aber ich 
sags trotzdem:
C nimmt man, damit man sich eben nicht mehr um so "Low-Level-Zeug" wie 
Rechnen per Bitmanipulationen kümmern muss. Man schreibt es dann im Code 
einfach so hin wie man es haben möchte z.B. "a = b * 4" und überlässt 
das Optimieren dem Compiler (in der Hoffnung, er möge dann selber die 
Multiplikation mit 4 durch eine entsprechende Shiftoperation ersetzen).

Der Vorteil liegt darin, dass der Code portabel wird und eher die Chance 
besteht, dass er auch auf einer anderen Plattform läuft, ohne dass man 
alles nochmals neu programmieren muss.
#4280368
Lesenswert?
• ▲
▼
Johnny B. schrieb:
> Wahrscheinlich werde ich jetzt für diese Aussage gesteinigt, aber ich
> sags trotzdem:
> C nimmt man, damit man sich eben nicht mehr um so "Low-Level-Zeug" wie
> Rechnen per Bitmanipulationen kümmern muss. Man schreibt es dann im Code
> einfach so hin wie man es haben möchte z.B. "a = b * 4" und überlässt
> das Optimieren dem Compiler (in der Hoffnung, er möge dann selber die
> Multiplikation mit 4 durch eine entsprechende Shiftoperation ersetzen).
>
> Der Vorteil liegt darin, dass der Code portabel wird und eher die Chance
> besteht, dass er auch auf einer anderen Plattform läuft, ohne dass man
> alles nochmals neu programmieren muss.

Totaler Humbug. Die ganze Aussage. Bitmanipulationen sind nötig, auch 
und gerade in C, und haben mit (fehlender) Portabilität wenig zu tun.
Eine Bitoperation ist auch nichts anders als die Multiplikation in 
deinem Beispiel. Beides sind High-Level Anweisungen welche der Compiler 
optimieren kann und wird.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.