Bitmaskberechnungen
-
Hallo
Ich hab ne Aufgabe an der Uni aber weis irgendwie net so wirklich wie ich die lösen soll.
Also
ich soll nen kleinbuchstaben einlesen (check)
und dann mittels einer Bitmaske in einen Großbuchstaben umwandeln
11011111 das is die maske die wir benutzen sollen. ich weis jetzt aber net wie und vorallem mit welchen bitoperatoren ich das umwandeln soll.
habt ihr ideen ?
so far
-
Du willst den Buchstaben mit der Maske ver-AND-den.
-
Sieh dir mal die ASCII Tabelle auf Wikipedia an.
Hier sieht man dass man das kleine a auch so (binär) darstellen kann:
01100001 (0x61)das große A:
01000001 (0x41)Das würde einem
01100001 AND 11011111
entsprechen. Oder in C:char c = getchar(); // Jaja, gibt int zurück usw.. c = c & 0xDF;
Somit kannst du quasi immer das eine Bit verändern.
-
Also muss ich praktisch
char c = "A"; char new; new = c & 0x1 new = c & 0x2 new = c & 0x4 . . . .
usw. machen bis ich alle bits geändert hab und den großbuchstaben hab ?
hab ichs richtig verstanden ?
-
ich mein im code natürlich a und nicht A
-
Du muss genau das machen was cooky geschrieben hat...
0xDF = 11011111 (die Bitmaske)
-
Nein, noch nicht richtig.
#include <stdio.h> int main() { char get_char, new_char; // Zeichen einlesen get_char = getchar(); // Das eine bit umstellen was bei der // ACII kodierung für die groß/klein // schreibung verantwortlich ist. // new_char = get_char & 0xDF; // Ausgabe printf("\n %c", new_char); return 0; }
Ich hoffe das ist soweit verständlich, wenn noch fragen auftauchen.. frag
Vielleicht googlest du auch mal nach dingen wie "bit operatoren" usw..
-
geht einfacher:
#include <stdio.h> int main() { char chr = getchar() & 0xDF; printf("\n %c", chr); return 0; }
-
HighLigerBiMBam schrieb:
geht einfacher:
#include <stdio.h> int main() { char chr = getchar() & 0xDF; printf("\n %c", chr); return 0; }
LOL
#include <stdio.h> int main() { printf("\n %c", getchar() & 0xDF); return 0; }
Ich meine, man sollte in so einem Thread halt schon auf verständlichkeit achten
-
Warum?
So gehts auch. Jetzt hat er eine gute Auswahl
Die Vereinfachungsschritte steigern bestimmt auch sein Verständnis für die C-Sprache!
-
HighLigerBiMBam schrieb:
Die Vereinfachungsschritte steigern bestimmt auch sein Verständnis für die C-Sprache!
Bestimmt!
-
Na solange er nicht gleich mit dem Nick "Noch Verwirrterer als vorher" antwortet ist ja alles gut
-
habs mit der ersten lösung hingekriegt ^^
hab jetzt aber nochmal die aufgabenstellung gelesen und muss noch nen paar andere sachen zusätzlich einbauen
aber es funktioniert
danke
-
Vielleicht solltet ihr in eurer Seminargruppe mal eure Recherchen besser koordinieren damit nicht jeder einzeln hier anfragt, siehe:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-276385.html
-
#include <stdio.h> int main() { return printf("\n %c", getchar() & 0xDF); }
-
^^