Hi, Ich bin gerade bei C an den Bitoperationen. Ich verstehe einfach nicht warum man alles in Hex schreibt ? Binär ist für mich viel einfacher ersichtlicher. Z.b beim Programmieren eines uC's. 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te Ausgang geschaltet ist. 0x05 -> wobei das hier nicht auf anhib ersichtlich ist was geschaltet ist. Auch bein Bitshift ist es doch einfacher ersichtlicher in Binär. Ob es nun 2 Stellen nach links geschoben hat. Es kann noch nicht sein das ich jedes mal den Taschenrechner nehmen muss um zu wissen welche Ausgänge gesetzt sind. Oder hat mir hier jemand eine Anregung wie man das einfach rechnen kann ? Vielleicht sehe ich das auch einfach viel zu kompliziert an.... Gruss KoE
Warum Hexadezimal ? schrieb: > Es kann noch nicht sein das ich jedes mal den Taschenrechner nehmen muss > um zu wissen welche Ausgänge gesetzt sind. Warum den Taschenrechner? Wer sowas nicht im Kopf berechnen kann, hat noch einiges an Lernarbeit vor sich.
Warum Hexadezimal ? schrieb: > Ich verstehe einfach nicht warum man alles in Hex schreibt ? Weil man im Binärformat zu viel zu schreiben hat.
Warum Hexadezimal ? schrieb: > Ich verstehe einfach nicht warum man alles in Hex schreibt ? Schreibt man auch nicht, sondern so, wie es für die Anwendung am zweckmässigsten ist. Hast Du ein Bsp. für Deine Aussage? Gruss Chregu
Spätestens wenn Du die dritte Binärkonstante mit 64 Bit hingeschrieben hast, weißt Du, warum ;). Hexadezimaldarstellung: jedes Zeichen ist ein Nibble, also 4 Bit, mit 16 möglichen Werten. Welcher Wert da für welche Bitkombination steht, ist noch überschaubar zu merken (das ist nur eine Frage der Übung) und wenn man's einmal kann, wundert man sich über solche Fragen.
Warum Hexadezimal ? schrieb: > 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te > Ausgang > geschaltet ist. und du lieferst hier gleich einen Grund, warum man es eher nicht macht, denn deinem 'Byte' fehlt eine '0'...
Justus S. schrieb: > und du lieferst hier gleich einen Grund, warum man es eher nicht macht, > denn deinem 'Byte' fehlt eine '0'... Führende Nullen kann man weglassen, da fehlt also nichts. MfG Klaus
Justus S. schrieb: > Warum Hexadezimal ? schrieb: >> 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te >> Ausgang >> geschaltet ist. > > und du lieferst hier gleich einen Grund, warum man es eher nicht macht, > denn deinem 'Byte' fehlt eine '0'... Naja hier sollte schon 0b00000101 stehen. Wenn ich schon vier Nulle davor geschrieben habe. Ich denke mein Hauptproblem ist halt das man dies im Alltäglichen gebrauch einfach so gut wie nie benötigt... daher fällt mir die umrechnung so schwer.. Naja danke für die Antworten
@ Klaus (Gast) >Justus S. schrieb: >> und du lieferst hier gleich einen Grund, warum man es eher nicht macht, >> denn deinem 'Byte' fehlt eine '0'... >Führende Nullen kann man weglassen, da fehlt also nichts. Ist zwar richtig, aber extra die 4 führenden Nullen anzugeben, um die 5. Null wegzulassen, ist irgendwie merkwürdig. Da paßt Justus' Aussage perfekt ...
Jens G. schrieb: > Ist zwar richtig, aber extra die 4 führenden Nullen anzugeben, um die 5. > Null wegzulassen, ist irgendwie merkwürdig. Ich schreibe in meinen Assemblerquelltexten auch häufig 0080H. Das zeigt mir immer deutlich, das ein 16 Bit Wert gemeint ist und nicht wie bei 80H ein Byte. Es geht einfach um Lesbarkeit auch nach Jaheren. Insofern hat auch die Schreibweise 01001100B ihre Berechtigung und wird gern verwendet. z.B. bei Matrix-Fonts kann im Quelltext das Muster direkt betrachtet werden: .DB 01111111B ;44H => D .DB 01000001B .DB 01000001B .DB 00100010B .DB 00011100B .DB 01111111B ;45H => E .DB 01001001B .DB 01001001B .DB 01001001B .DB 01000001B (Kopf drehen)
Warum Hexadezimal ? schrieb: > Vielleicht sehe ich das auch einfach viel zu kompliziert an.... Ja, in 2facher Hinsicht: 1. Das Bitmuster für 0..F hat man in kurzer Zeit sowieso im Kopf. 16 verschiedene Muster sind keine Überforderung. 2. Die Diskussion ist eigentlich überflüssig, da man ja schreiben kann wie man will, entweder 0E3H oder 11100011B oder 227D, Details stehen im Handbuch. Ich schreibe z.B. Tabellen für Pixelfonts binär, das sieht man schon im Listing wie der Buchstabe rauskommt, und es ist viel einfacher zu entwerfen. Dasselbe bei bitweise organisierten Control-Registern. Nichtsdestoweniger ist ein Taschenrechner sehr praktisch. Georg
Warum Hexadezimal ? schrieb: > 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te > Ausgang > geschaltet ist. > > 0x05 -> wobei das hier nicht auf anhib ersichtlich ist was geschaltet > ist. Das ist eine Frage der Übung. Bei 0xC0 und 0b1100000 sieht es schon anders aus, und bei mehr als 8 Bits dürften auch Deine Augen schnell aussteigen. Die 16 Kombinationen für Hex 0-F sind IMO leicht zu merken und fassen einfach 4 Bits zusammen. Für komplizierere Registerzuweisungen sollte man ohnehin besser Konstanten oder Makros benutzen.
Warum Hexadezimal ? schrieb: > 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te > Ausgang > geschaltet ist. Noch besser lesbar ist
1 | (1u << 2) + (1u << 0) |
Das kann man auch bei Ports mit 16 Pins noch gut lesen. Bei mehr als 8 Bit wird die Binärdarstellung sehr unübersichtlich, bei 64 Bit ist es hexadezimal aber auch nicht anders.
doppelschwarz schrieb: > Noch besser lesbar ist > (1u << 2) + (1u << 0) > Das kann man auch bei Ports mit 16 Pins noch gut lesen. Da sind wir dann unterschiedlicher Meinung. Ich finde 0x05 da deutlich einfacher und beser zu lesen. Noch besser lesbar als 0x05, 05H oder 0b00000101 wäre aber:
1 | PIN_B2 | PIN_B0 |
oder sogar
1 | LINKES_AUGE | RECHTES_AUGE |
mit entsprechenden Definitionen...
Eric B. schrieb: > Noch besser lesbar als 0x05, 05H oder 0b00000101 wäre aber: > PIN_B2 | > PIN_B0 > oder sogar > LINKES_AUGE | RECHTES_AUGE Dem ist nichts mehr hinzuzufügen. :-)
Warum Hexadezimal ? schrieb: > 0b0000101 -> Hier ist klar ersichtlich das der Nullte und der 2te > Ausgang > geschaltet ist. Es gibt keinen nullten Ausgang. Für physikalisch real vorhandene Dinge verwendet man üblicherweise Ordinalzahlen. "Bit 0 steuert den ersten real vorhandenen Ausgang an, Bit 7 den letzten" ist im Endeffekt eine Zuordnung von Software zu Realität.
:
Bearbeitet durch User
Jim M. schrieb: > Das ist eine Frage der Übung. Bei 0xC0 und 0b1100000 sieht es schon > anders aus Und das willst du gleich demonstrieren, indem du eine Null weglässt? Und das ist KEINE führende Null. Georg
Warum Hexadezimal ? schrieb: > Ich bin gerade bei C an den Bitoperationen. Ich verstehe einfach nicht > warum man alles in Hex schreibt ? Binär ist für mich viel einfacher > ersichtlicher. Weil laut Standard nur die Oktale, Dezimale und Hexadezimale Schreibweise für Ganzzahlen erlaubt ist. Sowas wie 0b10101010 ist eine Compilererweiterung. Andere Gründe bezüglich Übersichtlichkeit wurden ja bereits genannt.
Klaus schrieb: > Führende Nullen kann man weglassen, da fehlt also nichts. In der Digitaltechnik und der Mathematik haben führende Nullen keine Bedeutung. Führende Nullen gibt es nur in Unternehmen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.