Arduino: Formatierung von Binärzahl

Gast #6953448
Lesenswert?
• ▲
▼
Unabhängig von Arduino und maximal portierbar:
1
#include <stdio.h>
2
#include <stdint.h>
3
#include <stdbool.h>
4

5
int main()
6
{
7
    uint8_t zahl=2;
8
    // uint16_t zahl=2;
9
    // uint32_t zahl=2147483647;    
10
 
11
    int bits = sizeof(zahl)*8;
12
    for (int i=0; i<bits; i++)
13
    {
14
        bool msb = zahl & (1<<bits-1);
15
        putchar('0'+msb);
16
        zahl = zahl<<1;
17
    }
18

19
    putchar('\n');
20
}

Alternativ, aber zumindest auf AVR vermutlich langsamer ist:
1
    for (int i=bits-1; i>=0; i--)
2
    {
3
        bool bit = zahl & (1<<i);
4
        putchar('0'+bit);
5
    }

Der Unterschied ist, dass der untere Code eine Shift-Operation mit 
variabler Anzahl von Schritten enthält. Da AVR keinen Barrel-Shifter 
haben, muss der C-Compiler dies durch eine innere Wiederholschleife 
umsetzen.
Gast #6953561
Lesenswert?
• ▲
▼
Veit D. schrieb:
> aber das läuft vermutlich nur auf dem PC, oder?

In der Tat habe ich das Programm nur auf einem Laptop getestet. Für 
serielle/usb Ausgaben musst du bei Arduino die Methoden der Serial 
Klasse benutzen, anstatt putchar().

Für serielle Ausgabe auf AVR Mikrocontroller ohne Arduino Framework habe 
ich ein Beispiel: http://stefanfrings.de/avr_hello_world/index.html

> Unabhängig bedeutet doch läuft überall?

Das "unabhängig" bezog sich auf den Algorithmus.

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.