Hex to bit to dezimal

Gast #2293807
Hallo folgendes Problem will ich unter C lösen und bekomme es nicht hin.

Eine Variable
1
u8_var = (uint8) 0x80

ist in binärschreibweise 10000000

jetzt würde ich gerne die 0x80 in dezimal 8 umwandeln da hier die achte 
Stelle in binärschreibweise gemeint ist umwandeln.

Wie geht das?
Gast
ich möchte 0x80 nicht einfach in dezimal umwandeln

sondern zunächst in binär und dann schließend anhand der Bitposition 
einen dezimal Wert bekommen
1
0x80
2
10000000
3
8
4

5
0x08
6
1000
7
4

usw
> jetzt würde ich gerne die 0x80 in dezimal 8 umwandeln da hier die achte
> Stelle in binärschreibweise gemeint ist umwandeln.
>
> Wie geht das?


So wie ich das verstehe willst du den Index jener Ziffer einer binär 
dargestellten Zahl, welche den Wert 1 hat? Ist das richtig?

Auf den ersten Blick macht das der Code von Peter, mit dem feinen 
Unterschied das der Index bei 0 anfängt. Also noch 1 addieren und dann 
hast dus.
du willst wissen, welches bit der variable gesetzt ist, oder?
die jeweilige bitposition entspricht ja 8,4,2,1. das kannst du für beide 
nibble der variable anwenden.
mal als ansatz:
1
for(uint8_t i = 0; i <= 7; i++)
2
{
3
  if(u8_var & (1 << i))
4
    return ++i;
5
}

[edit] zu spät!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.