002
11.11.2013, 14:11 Uhr
~ninjassassin
Gast
|
Hallo und vielen Dank für deine Antwort.
Die Aufgabenstellung lautete:
Zitat: |
Schreiben Sie ein Programm, das 2 positive ganze Zahlen z und p einliest und Ihnen ausgibt, ob das p-te bit (von hinten) von z eine 1 oder eine 0 ist: Sorgen Sie dafür, daß das Programm mit einer Fehlermeldung beendet wird, wenn eine negative Zahl eingegeben wurde. 2. Ein sparsamer Programmierer hat sich ein Programm ausgedacht, mit dem er ein Zeichen (8 bit ASCII) von einem Studierendenrechner des Raums DV2 auf einen weiteren schicken kann. Dazu verpackt er folgende Informationen in eine Variable vom Typ unsigned short-Integer (16 bit): Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8 Bit 9 Bit 10 Bit 11 Bit 12 Bit 13 Bit 14 Bit 15 Bit 16 Nummer des Absender- Rechners (zwischen 0 und 15) Nummer des Empfänger-Rechners (zwischen 0 und 15) Zu übermittelndes Zeichen als ASCII-Code Beispiel: Die Zahl 15193 sieht binär kodiert wie folgt aus und kodiert dementsprechend die untenstehende Nachricht: 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 Absender: Rechner 3 Empfänger: Rechner 11 Übermitteltes Zeichen: Zeichen mit dem ASCIICode 89 ('Y') Helfen Sie dem Programmierer, indem Sie zwei Programme schreiben: 1. ein Programm, das die Nummern des Absender- und Empfänger-Rechners sowie das zu übermittelnde Zeichen von der Konsole einliest und die daraus resultierende short-Integer berechnet. Zur Kontrolle können Sie die berechnete Zahl auf die Konsole ausgeben: Fortsetzung der Aufgabe und Hinweise auf der nächsten Seite beachten ü Hinweis: Beim bit-weisen ODER einer Zahl mit einem (kürzeren) char werden die hinteren Stellen miteinander verglichen: 372 | 'a' entspricht binär: 00000101110100 | 0000000001100001 und ergibt 0000000101110101. 2. ein Programm, das aus einer gegebenen (d.h. zum Beispiel von der Tastatur eingelesenen) unsigned short-Integer die Nummern des Absender- und Empfänger-Rechners und das zu übermittelnde Zeichen berechnet und auf Konsole ausgibt: Hinweis: Am einfachsten ist die Berechnung der Rechnernummern, wenn Sie die Zahl vor dem Anwenden der Maske nach rechts verschieben.
|
So, und mein Code bezog sich auf Aufgabe 2.2!
Ich setzte den Wert ja nicht auf Null, denn ich habe doch eine 16-Bit Variable. Diese verschiebe ich um 8 Stellen nach links, um die vordersten 8 Stellen "rauszukicken" und dann wieder um 8 Stellen nach rechts. Nun sollte dort das Zeichen "Y" rauskommen...
|