Forum: C-Programmieren
Moderatoren: juergen, Martin ConradThema: Binärdarstellung mit besonderer Vorgehensweise
[EDIT] - Re: Binärdarstellung mit besonderer Vorgehensweise
icefire am 06.12.2011 um 21:37
Zitat:
der Wert 0x7FFFFFFF soll das Limit von int darstellen, also 2^31. Ich bin mir aber nicht sicher, ob ich richtig eingetippt habe im Windows Calculator^^
zumindestens wollte ich
10000000 00000000 00000000 00000000
Nein, das ist nicht das gleiche. Binär und Hexadezimal kann man leicht umrechnen, weil immer 4 Bit gemeinsam für eine Hex-Ziffer stehen. Also wäre zb die Binärzahl 1000 0000 0000 0000 im Hex-System die Zahl 8000.
Aber warum die Zahl explizit definieren? Du willst eine Zahl, bei der das 31. Bit gesetzt ist:
int y = 0x01 << 30; /// Um das n-te Bit zu setzen, um n-1 shiften
mfg, Wolfgang
PS: Integerzahlen sind nicht auf allen Systemen gleich groß, und vorallem nicht überall genau 32 Bit. Für ein Übungsprogramm für die Uni ist das wohl egal, wär aber gut wenn mans im Hinterkopf behält.
--
Hex, Bugs and Rock 'n Roll
[EDIT] - Re: Binärdarstellung mit besonderer Vorgehensweise
cryl0v am 06.12.2011 um 21:44
Ich habe auf der ersten Seite zur selben Zeit geschrieben:
Zitat:
EDIT: 21:36
Ich habe vergessen, dass das letzte Bit das Vorzeichen darstellt. wenn ich
01000000 00000000 00000000 00000000
umwandle, dann ist y = 0x40000000
Dann kommt das erwartete Ergebnis raus.
Jetzt noch die Frage, wie geht man an die negativen ganzen Zahlen ran *grübel*
Danke für den Tipp auch wenn ich es bereits aus Erfahrung kenne :D
Bei der Roboterprogrammierung ist der Integer nicht so groß.
Apropos fällt mir ein, dass es im C von A bis Z Buch die Überprüfung des letzten Bits drin steht, aber ich war damals zu Neu um das zu verstehen. Jetzt versteh ich es endlich Hurra !
EDIT: 21:49
Es funktioniert auch für negative Zahlen. Bei mir war nur ein Schleifenaufruf zu wenig, der von Experimenten kam.
Aufjedenfall Danke ich für deine Hilfe Wolfgang alias icefire. Hat Spaß gemacht die Lösung zu erarbeiten !
