Logikproblem

Gast #3328242
Lesenswert?
• ▲
▼
Hallo Leute,

Ich arbeite mich erst in C++ und MC Technik ein.
Nun möchte ich folgende Aufgabenstellung lösen und weiss nicht mehr 
weiter.

Ich möchte die Bytereihung beibehalten und über die serielle augeben.

ich erhalte aber immer folgende Ausgabe "01110000",ich möchte aber
"00001110" ausgeben.

Der Fehler liegt sicher hier "byte mask = 0x01; mask; mask <<= 1"
was muss ich ändern dass sich die Ausgabe dreht ?

lg eddi


#include <SoftwareSerial.h>

    void setup()
    {
    Serial.begin(57600);
    }



    void loop()
    {
     byte test = 00001110;

     for (byte mask = 0x01; mask; mask <<= 1)
      {
        if (test & mask) // wähle das  bit
           Serial.print("1"); // send 1
        else
           Serial.print("0"); // send 0
      }
    }
Gast #3329336
Lesenswert?
• ▲
▼
Leider hänge ich bei meinem Problem noch immer etwas fest.

Obige Lösung funktioniert aber nur mit einem Wert in einer Varianblen
   Warum bekomme ich dann verschiedene Werte ob ich den wert aus einer 
Variablen nehme oder aus einem Array ?

lg ed

#include <SoftwareSerial.h>

    void setup()
    {
    Serial.begin(57600);
    }


     unsigned long Long_Array1[2] = {918016,9502976};

     uint8_t i;

    void loop()
    {
   // Ausgabe Long_Array1

    long test;
    long mask = 0x800000;
    for (i=0; i<2; i++);
    {
     // test = Long_Array2[i];   // nehme ich die Daten aus dem Array 
bekomme ich folgende Ergebnis: 000000000010010110000000
     test = 918016;          // nehme ich die Daten direkt aus der 
Variablenrehalte ich das Richtige Ergebins: 000011100000001000000000
    do{
      if (test & mask) // wähle das  bit
         Serial.print("1"); // send 1
      else
         Serial.print("0"); // send 0
      mask >>= 1;
    }while(mask);

    }
    Serial.println(" ");
}

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.