Bitreihenfolge drehen und in Ziffern aufteilen

Gast #2095188
Lesenswert?
• ▲
▼
Moin

Ich weiß das das Thema schon oft behandelt wurde. Ich habe 
schätzungsweise mittlerweile die Hälfte der Themen durchgearbeitet und 
auch google bemüht. Aber ich verstehe nicht wie das funktioniert.
Ich habe eine 17-Bit binärzahl die ich spiegeln und in Ziffern aufteilen 
möchte(in c für einen ATMega 32). Um die Zahl zu drehen habe ich gelesen 
das man eine lookup-Tabelle nutzen kann oder das man das mit eine 
stackpointer schafft aber ich habe nirgends gefunden, wie man das 
wirklich realisiert.

Wär echt super wenn ihr mir da weiterhelfen könnt. Mir würde auch ein 
Link zu einem anderen thread reichen den ich vielleicht noch nicht 
gelesen habe auch wenn ich das nicht glaube ;-)


Danke schoneinmal im Voraus

Oli
#2095209
Lesenswert?
• ▲
▼
Hallo,

das ist ein bisschen durcheinander geraten,

Peter schrieb:
> uint8_t Bits[17];
>
> for( uint8_t b = 0; b < 17; ++b ) {
>    Bits[ b ] = (Zahl % 2);
>    b = b >> 1;
> }
Falls es wirklich 17 Bit sind
1
uint8_t Bits[17];
2
uint32_t temp32
3
temp32 = 1
4
for( uint8_t b = 0; b <= 17; ++b ) {
5
  if ((temp32 & Zahl) == 0 )
6
    Bits[ b ]= 0;
7
  else
8
    Bits[ b ]= 1;
9
   temp32  += temp32;
10
 }
Gast #2095225
Lesenswert?
• ▲
▼
Also er hat jetzt keine Fehlermeldung mehr also sollte es funktionieren 
aber ich verstehe nicht was das Programm genau macht. Könntest du 
vielleicht noch mal kurz die einzelnen Schritte beschreiben?!
Das wäre echt super
Gast #2095233
Lesenswert?
• ▲
▼
Horst Hahn schrieb:
> das ist ein bisschen durcheinander geraten,
>
> Peter schrieb:
>> uint8_t Bits[17];
>>
>> for( uint8_t b = 0; b < 17; ++b ) {
>>    Bits[ b ] = (Zahl % 2);
>>    b = b >> 1;
>> }

stimmt, es war so gemeint
1
uint8_t Bits[17];
2

3
for( uint8_t b = 0; b < 17; ++b ) {
4
   Bits[ b ] = (Zahl % 2);
5
   Zahl  = Zahl  >> 1;
6
}
Gast #2095297
Lesenswert?
• ▲
▼
So habe ich mir das gedacht:

uint8_t Bits[17]; // uint8_t ist die variable für den array? Ich vermute 
hier wird festgelegt, wie viel Bits einzulesen sind.

uint32_t temp32 // ?

temp32 = 1 // ?

for( uint8_t b = 0; b <= 17; ++b ) // was macht uint8_t hier? b bis 17 
hochzählen

{

 if ((temp32 & Zahl) == 0 ) // wenn temp32 und Ziffer1...17 gleich 0 
sind, dann ?

   Bits[ b ]= 0;        // ²

 else                   // ansonsten ?

   Bits[ b ]= 1;        // ²was passiert hier?

  temp32  += temp32;    // temp32 = temp32 + temp32 wofür?
Gast #2095299
Lesenswert?
• ▲
▼
Oliver schrieb:
> So habe ich mir das gedacht:
> ...

ich glaube du solltest dir ein C buch nehmen und es erstmal von Vorne 
anfangen zu lesen.
Du kommst ja noch nicht einmal soweit das Verfahren zu erkennen wie die 
Bits ermittelt werden, weil du den eigentlichen C code überhaupt  nicht 
verstehts.
Gast #2095313
Lesenswert?
• ▲
▼
Ganz einfach gesehen möchte ich 17 Bit, die ich seriell reinbekomme auf 
einer Anzeige darstellen. Es geht im Prinzip nur darum, dass es 
funktioniert und nicht um das Verständnis C zu programmieren, dazu habe 
ich leider keine Zeit ;-)
Gast #2095346
Lesenswert?
• ▲
▼
Oliver schrieb:
> Es geht im Prinzip nur darum, dass es
> funktioniert und nicht um das Verständnis C zu programmieren, dazu habe
> ich leider keine Zeit ;-)

Oh, dann hast Du dich -in meinen Augen- für dieses Forum 
disqualifiziert.

Hier gibt es Hilfe zur Selbsthilfe, und zwar viel, oft und fast immer 
sehr gut.

Wenn Du aber jemanden suchst, der deine Aufgaben macht, musst Du anders 
fragen oder / und auch woanders suchen.

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.