Sehr schöne Frage! DH!
1.Geben Sie die Werte der ASCII-Zeichen A, a, Z, z, @, 0, 1, 2...., 9 Dezimal, Binär und Hexadezimal an.
Merk dir einfach folgende Fixpunkte:
0x00-0x1F - Steuerzeichen
0x20 - Leerzeichen
0x21-0x2F - gängige Sonderzeichen
0x30-0x39 - Ziffern 0-9
ab 0x41 - Großbuchstaben
ab 0x61 - Kleinbuchstaben
Dezimal und Binär kannste dir selber ausrechnen.
Man sieht aber Binär schön den Unterschied zwischen Klein- und Großbuchstaben:
großes A: 0100 0001
kleines a: 0110 0001
Zwischen Groß- und Kleinbuchstaben ist also nur ein Bit anders
Deswegen macht man das ja auch so
2.Wie kann man Kleinbuchstaben in Großbuchstaben umwandeln? Mit welcher logischen Operation ist dies (und auch der Weg von Großbuchstaben zu Kleinbuchstaben) möglich
Zwei Möglichkeiten:
Entweder du subtrahierst einfach 0x20 bzw. 32
gross = klein + 0x20;
oder du setzt einfach das 3. Bit der oberen Tetrade auf Null. (du sollst es ja mit rein logischer Operation machen. Da würde ich folgendermaßen vorgehen:
Der Abstand ist 32 (=0x20). Also 0010 0000
Du komplementierst also diese zahl und erhälst 1101 1111
Wenn du diese zahl in dein Buchstaben rein"undest", dann erhälst du immer ein Großbuchstaben (Auf Bitebene "undest" du das entsprechende Bit also raus):
Bei C# würde das so gehen: gross = klein & ~0x20
Ob das bei Java bzw. C auch so funktioniert, bin ich mir nicht ganz sicher, da die 0x20 nicht als Objekt verstanden wird.
wenn du aber die 0x20 in eine Abstandsvariable (z.b. byte fix = 0x20;) schreibst, dann kannst du das auf jeden Fall so machen:
groß & ~fix
PS: Ich glaube bei C geht das auch direkt.
Schließlich geht da ja auch int i = ~0;
Bei Java bin ich mir trotzdem nicht ganz sicher. Das wäre aber doch rein logisch eine Option. Willst du von Groß auf Kleinbuchstaben, dann musst du halt die 0x20 rein"odern".
klein = groß | 0x20;
Aber die Aufgabe 2. verstehe ich nicht, was soll es denn für logische Operationen geben um die Buchstaben umzuwandeln? Muss man das mit einem Programm machen, oder kann man die 2 Fragestellung auf einem Blatt Papier lösen?
Wenn du Aufgabe 1 richtig machst und erkennst wie der Abstand zwischen beiden ist (nur ein Bit), dann kannst du das auch mit rein logischer Operationen lösen
Ich hoffe ich konnte dir helfen
Gruß Omni
PS: morgen rufe ich den Duden und Wahrig an und erbitte um Aufnahme der Wörter "rausunden" und "reinodern".