Halbbyte eines Ascii-Zeichen ausgeben
-
Hallo,
ich habe folgende Aufgabe zu lösen:Schreiben Sie ein interaktives C-Programm, das den Benutzer auffordert, ein Zeichen aus dem ASCII-Code einzugeben und das daraufhin den Wert des höherwertigen Halbbytes des Zeichens und den Wert des niederwertigen Halbbytes des Zeichens ausgibt.
Bis zur Eingabe des Ascii-Zeichens habe ich es noch verstanden, aber was nun?
Wenn der Benutzer z.B. "x" eingibt, wie bring ich dem Programm bei das Zeichen in ein Binärcode auszugeben?Beschäftige mich erst seit ein paar Tagen mit c bzw. Programmieren, daher bitte ich um Verständnis.
-
Ein Ansatz wären zum Beispiel die Bitoperatoren (<< und >>).
-
Ein Byte sind normalerweise 8 Bit (bei ANSI C auch CHAR_BIT), d.h.
255 == 11111111
Die niederwertige Hälfte maskiert man mit Bit-And Operator &, also
11111111
&
0000111100001111
in C dann ergebnis = ausgangswert & 15;
Die höherwertige Hälfte shiftet man am besten mit dem Rechtsshift-Operator >>
11111111
1x shift nach rechts
01111111
1x shift nach rechts
00111111
1x shift nach rechts
00011111
1x shift nach rechts
00001111in C dann ergebnis = ausgangswert >> 4;
-
Das ist so...nicht ganz korrekt.
Für vorzeichenlose Integertypen verhält sich der Rechtsshift so, wie Wutz es beschreibt, aber wenn char vorzeichenbehaftet ist - und das kann er durchaus sein - schiebt sich bei gesetztem Vorzeichen auf der linken Seite eine 1 in die Variable, keine 0. Etwa
10110000 >> 1 = 11011000
Demenstprechend: Entweder
(unsigned char) c >> 4
oder
c >> 4 & 0x0f