Forum: Mikrocontroller und Digitale Elektronik Bitfolge umrechnen


von Andre (Gast)


Lesenswert?

Hallo Leute,

ich habe eine absolute Anfängerfrage. Trotz google habe ich keine 
sichere Antwort gefunden.

Ich habe folgende Bitfolge : 1111111111000011 und will die in eine 
Dezimalzahl umrechnen. Wäre ja soweit kein Problem.
Nur diese Zahl ist Vorzeichenbehaftet. Also ist die gegebene Zahlenfolge 
negativ. Und den Sprung wie es da weiter geht schaffe ich nciht. Kann 
mir bitte jemand helfen?

Gruß

Andre

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Mit GNU-C und einem 16-Bit int:
1
int x = (int) 0b1111111111000011;

Und die Zahl dann einfach ausgeben unwandeln, rechnen damit, was auch 
immer.

von Karl H. (kbuchegg)


Lesenswert?

Andre schrieb:
> Hallo Leute,
>
> ich habe eine absolute Anfängerfrage. Trotz google habe ich keine
> sichere Antwort gefunden.
>
> Ich habe folgende Bitfolge : 1111111111000011 und will die in eine
> Dezimalzahl umrechnen. Wäre ja soweit kein Problem.
> Nur diese Zahl ist Vorzeichenbehaftet. Also ist die gegebene Zahlenfolge
> negativ. Und den Sprung wie es da weiter geht schaffe ich nciht. Kann
> mir bitte jemand helfen?

2-er Komplement anwenden

* alle Bits umdrehen
* noch 1 dazuzählen
-> und du hast die positive Zahl, die der negativen entspricht.


             1111111111000011
 umdrehen    0000000000111100
 +1          0000000000111101

 -> das ist das Bitmuster für 61, also war dein ursprüngliches Bitmuster 
das Muster für -61

Aber: Wozu der Aufwand?
platziere die Bits in eine 16 Bit signed Variable und du hast deine Zahl 
fix fertig.

von Andre (Gast)


Lesenswert?

Sinn ist das ich diese Sache ein für alle mal richtig verstehe und das 
mal händig nachrechen will.

Also habe ich 1111111111000011 umgedreht 111100. Entspricht 60 dezimal.
Also ist die Lösung -61?

von Cyblord -. (cyblord)


Lesenswert?

Andre schrieb:
> Sinn ist das ich diese Sache ein für alle mal richtig verstehe und das
> mal händig nachrechen will.
>
> Also habe ich 1111111111000011 umgedreht 111100. Entspricht 60 dezimal.
> Also ist die Lösung -61?

Genau

von Andre (Gast)


Lesenswert?

ah danke. stand ja schon im beitrag drüber

von Stefan++ (Gast)


Lesenswert?

Hallo

zum reinen "Verstehen" das hier lesen
http://de.wikipedia.org/wiki/Zweierkomplement

Gruss Stefan

von Bernhard S. (b_spitzer)


Lesenswert?

Die Stellenwertigkeit der n-ten Stelle ist 2^n, nur die oberste Stelle 
hat die Wertigkeit -2^n.

von Mikel M. (mikelm)


Lesenswert?

Du müßtest dafür aber auch wissen in welchem Format die Zahl dargestellt 
ist.
 Das Zweierkomplement ist zwar ein sehr häufiges Verfahren aber es gibt 
auch andere Darstellungsweisen. Die Bitfolge kann also je nach Format 
eine ganz anderen Wert ergeben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.