Bitmaske berechnen

Gast #3072731
Lesenswert?
• ▲
▼
Hi,

ich würde gerne mit Hilfe des Präprozessors eine Bitmaske berechnen. Und 
zwar lege ich in einem Makro fest wie viele Pins ich benötige, z.B.:
1
#define DIMENSION 5

In einem weiteren Makro lege ich nun fest, ab welchen Pin begonnen wird 
z.B.
1
#define START 2

Konkret würde das jetzt bedeuten, dass ich Pins 2, 3, 4, 5 und 6 
"benötige". Der Port spielt hier jetzt mal keine Rolle und wird in einem 
weiteren Makro festgelegt.

Jetzt bräuchte ich ein Makro, welches mir eine dazu passende Bitmaske 
erstellt, um z.B. die DDR Register zu setzen. Für das o.g. Beispiel 
würde das jetzt lauten: 0b01111100.

Die mathematische "Formel" hierfür lautet:
1
#define BIT_PATTERN ((2 ^ DIMENSION) - 1) << START

Leider ist allerdings der "^" Operator als XOR und nicht als Potenz 
definiert. Ich bräuchte jetzt praktisch ein Potenzmakro für den 
Präprozessor. Könnt ihr mir da weiterhelfen?

Vielen Dank!

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.