Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Darstellung eines char-Zeichens

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.11.2013, 18:42 Uhr
ninjassassin



Hallo Community,

ich komme bei folgendem nicht weiter:


C++:
# include <iostream>

using namespace std;


int main()
{
    unsigned short int SenderEmpfaengerZeichen, eingabe1, eingabe2, UnsignedShort, AbsenderNr, EmpfaengerNr, zwischen, zwischen0;
    char zeichen, zeichen1;
    

    cout << "Welche unsigned short soll dekodiert werden? ";
        
        cin >> UnsignedShort;

    cout << "Der Absender ist Rechner Nr. :            ";

        AbsenderNr=UnsignedShort>>12;

        cout << AbsenderNr << endl;

    cout << "Der Empfänger ist Rechner Nr.:            ";

        zwischen=UnsignedShort>>8;
        zwischen0=zwischen<<12;
        EmpfaengerNr=zwischen0>>12;
        

        cout << EmpfaengerNr << endl;

    cout << "Das Zeichen ist:                        ";

    zeichen1=UnsignedShort<<8;
    zeichen=zeichen1>>8;

    cout << zeichen << endl;

    
    system("pause");
    return 0;
}



Hier sollte normalerweise als Zeichen "Y" rauskommen, aber er schreibt einfach nichts in die Konsole. Für den Absender und Empfänger habe ich das Ergebnis richtig raus...

Vielen Dank für eure Hilfe!

PS.: Beachtet meine ganzen Variablen bitte nicht ^^

Dieser Post wurde am 10.11.2013 um 18:43 Uhr von ninjassassin editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.11.2013, 12:53 Uhr
Tommix



Hallo,
mir ist nicht klar, was Dein Programm bezwecken soll, aber

Zitat:

C++:
zeichen1=UnsignedShort<<8;


setzt den 8-Bit-Wert zeichen1 immer auf Null.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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...

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.11.2013, 15:10 Uhr
Tommix



Nein, Du schiebst zeichen1 nach rechts und das ist eine 8-bit-Variable.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.11.2013, 21:01 Uhr
~ninjassassin
Gast


Wie müsste deiner Meinung nach denn der "richtige" Code lauten? :o
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.11.2013, 12:07 Uhr
Tommix



Na indem Du hier auch eine 16-Bit-Variable nimmst.
Davon abgesehen ist die Bitbreite von short, int, long und Co. nicht festgelegt. Die Aufgabenstellung ist meines Erachtens didaktisch nicht sehr geglückt.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: