Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Wenn du also wirklich noch keine Schleife benutzen sollst, dann ist der andere Ansatz vermutlich besser:

Wenn X größer oder gleich 128 ist, gib 1 aus und vermindere X um 128, ansonsten gib 0 aus.

Wenn X größer oder gleich 64 ist, gib 1 aus und vermindere X um 64, ansonsten gib 0 aus.

Wenn X größer oder gleich 32 ist, gib 1 aus und vermindere X um 32, ansonsten gib 0 aus.

Wenn X größer oder gleich 16 ist, gib 1 aus und vermindere X um 16, ansonsten gib 0 aus.

Wenn X größer oder gleich 8 ist, gib 1 aus und vermindere X um 8, ansonsten gib 0 aus.

Wenn X größer oder gleich 4 ist, gib 1 aus und vermindere X um 4, ansonsten gib 0 aus.

Wenn X größer oder gleich 2 ist, gib 1 aus und vermindere X um 2, ansonsten gib 0 aus.

Wenn X größer oder gleich 1 ist, gib 1 aus und vermindere X um 1, ansonsten gib 0 aus.

Geschrieben

Noch ein kleiner Hinweis:

Intern werden alle Zahlen binär dargestellt. Es ist möglich, die Zahl als binäre Zeichenfolge, unter Verwendung von zwei auf binären Zahlen arbeitenden Operatoren, auszugeben.

Die Umsetzung ist sehr kurz. Versuche es einfach mal.

Geschrieben

hab es jetzt folgendermassen durchdacht.

wenn es heißt mann soll es mit bitoperationen machen.

dann erstelle ich 2 verschiedene variablen mit jeweils demselben wert

und lasse diese über die Bitoperation UND vergleichen

und diese operation gibt dann jeweils 1er aus an denen die beiden zahlen übereinstimmen. da es gleiche zahlen sind , müsste ich genau mein ergebniss erhalten.

stimmt ihr mit mir über ein ? ;)

Geschrieben
dann erstelle ich 2 verschiedene variablen mit jeweils demselben wert

und lasse diese über die Bitoperation UND vergleichen

Das kannst du dir sparen. Da kommt doch wieder derselbe Wert raus.

Die Aufgabenstellung ist ziemlich schwammig, vermutlich, weil nicht ganz klar ist, was du benutzen sollst, und was nicht.

Ich vermute, dass mit Bitoperationen gemeint ist, dass du die einzelnen Bits ausmaskieren sollst:

if( c & 128 )
cout << '1';
else
cout << '0';[/code] usw. Du kannst die Zweierpotenzen auch durch Schiebeoperationen ermitteln, wenn du willst:
[code]if( c & ( 1 << 7 ) )

Geschrieben

stimmt ihr mit mir über ein ? ;)

Nein, so war es nicht gemeint. Ich poste mal etwas C++ Quelltext, der Dir die Bits einer Zahl vom Typ char ausgibt. Versuche aber bitte zu verstehen, warum es funktioniert, z.B. indem Du die einzelnen Zwischenschritte auf einem Blatt Papier in binärer Schreibweise durchgehst. Wenn es Fragen gibt, dann frage ruhig.


char zahl = 123;

for(int i=7;i>=0;i--) std::cout << ((zahl >> i) & 1);

Die Schleife läuft rückwärts, damit die Ausgabe mit den "höherwertigen" Bits beginnt, bis sie mit dem geringwertigsten Bit endet. Dieses entspricht der gängigen Schreibweise von Binärzahlen.

Der Bit-Shift-Operator ">>" schiebt die Bits in der Variablen "zahl" um i-Stellen nach rechts, so dass das als nächstes auszugebende Bit ganz rechts steht. Der binäre Und-Operator "&" setzt durch eine Verknüpfung mit 1 alle Bits außer dem ganz rechten Bit auf 0, damit nur dieses eine Bit bei der Ausgabe der jeweils nächsten Stelle (der Zahl in binärer Darstellung) in der Schleife berücksichtigt wird. Dadurch ist auch sichergestellt, dass pro Stelle nur 0 oder 1 ausgegeben wird.

Falls das Beispiel Dinge benutzt, die Du noch nicht kennst, z.B. die Operatoren ">>" und "&": Grundsätzlich kann man auch mit Divisionen und Divisionsresten arbeiten. Die obige Vorgehensweise nutzt hingegen aus, dass die Zahlen im Computer bereits binär vorliegen und man nur die einzelnen Stellen für die Ausgabe extrahieren muss.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...