www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie jedes zweite Bit speichern


Autor: Patrick Be (bernd09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem, ich habe ein 8 Bit Datenwort, ich will aber 
nur jedes 2 Bit in einer Variablen Speichern.
z.B. Daten=01010101, ich will jedes zweite Bit speichern, hintereinander 
Daten2=00001111. Ich muss also jedes zweite Bit in meine zweite Variable 
schieben, aber wie?

Vielen Dank

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum willst du jedes zweite Bit hintereinander speichern?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daten2 = (Daten & 0x01) | ((Daten >> 1) & 0x02) | ((Daten >> 2) & 0x04) 
| ((Daten >> 3) & 0x08);

Man könnte es auch mit einer Schleife realisieren...

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Warum willst du jedes zweite Bit hintereinander speichern?

Ist doch egal, oder?
Warum fährt der Mensch zum Mond oder sucht in Lichtjahren entferneten 
Galaxien nach Leben?

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stichwort Manchester ?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
z.B.:
  uint8_t Daten  = 0x55; // binaer 01010101
  uint8_t Daten2 = ( ( Daten & 0x01 )
                     |
                     ( ( Daten >> 1 ) & 0x02 )
                     |
                     ( ( Daten >> 2 ) & 0x04 )
                     |
                     ( ( Daten >> 3 ) & 0x08 )
                     );
  // Daten2 sollte jetzt 0x0F (binaer 00001111) sein

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, zu langsam

Autor: Patrick Be (bernd09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank schonmal für die Antworten.

Wie würde es denn mit einer Schleife realisiert werden?

Zu diesen 4Bits kommen später nochmal 4Bits dazu, die Oder-Verknüpft 
werden. Deshalb hintereinander.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus: Danke für die Bestätigung.

@Patrick: Die Schleife kannst du dir selber überlegen... ;)

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie würde es denn mit einer Schleife realisiert werden?

Warum auf Biegen und Brechen umständlicher und langsamer machen?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist doch egal, oder?

Nicht unbedingt. Wenn man mehr über das Problem weiß, gibt es evtl. 
bessere Ansätze.


>Stichwort Manchester ?

Wenn es um eine RC5 Dekodierung geht, das geht auch komplett anders.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tabelle.

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Informatikhausaufgabe?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mask<<=2;

Autor: Patrick Be (bernd09)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist eine SPI Übertragung von 16 Bit, brauche aber nur jedes zweite Bit. 
Es werden erst 1*8Bit übertragen, von diesen 8Bit brauche ich aber nur 
4Bit(jedes zweite), dann nochmal 8Bit, von denen ich auch nur 4Bit 
brauche(jedes zweite), diese werden jeweils in einer Variablen 
gespeichert,danach werden diese 2*4Bit wieder zusammen in eine Variable 
geschrieben. Und dann ausgegeben.

Daten1=00001111
Daten2=11110000

Wert=Daten1|daten2

so ist es mal angedacht:-)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, aber dann schiebt man die zweiten Daten aber hoffentlich nicht wie 
oben nach rechts, um sie dann wieder um 4 nach links zu schieben, 
sondern analog gleich nach links...

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.