Dezimalzahl in Binärzahl



  • Hallo Welt,

    Ich versuche Gerade Dezimalzahlen als Binärzahlen darzustellen. Es sollen die ersten 8 Bit dargestellt und für jedes Bit eine Variable benutzen werden.

    In der Aufgabe steht: "Maskieren Sie die einzelnen Bits aus der Zahl und schieben Sie diese jeweils an Low-Bit-Position."

    Ansatz:
    Ich habe im Internet eine Ähnliche frage gefunden dort werden aber mehr als 8 Bit ausgegeben und auch nur eine Variable verwendet. Mir fehlt leider der richtige Ansatz, wie weise ich jedes Bit einer Variabel zu? Was ist eine low Bit Position?

    #include <iostream>
    #include <limits.h>
    
    using namespace std;
    
    
    int main()
    {
    
    	                                             //Variablen 
    
    	int Zahl = 0;
    	bool Bit1 = 0;
    	bool Bit2 = 0;
    	bool Bit3 = 0;
    	bool Bit4 = 0;
    	bool Bit5 = 0;
    	bool Bit6 = 0;
    	bool Bit7 = 0;
    	bool Bit8 = 0;
    
    	int AnzahlBits = { sizeof( Zahl) * 8 };
    	
    	                                              //Eingabe Zahlenwert (Aus dem Internet kopiert)
    
    	cout << " Geben sie die Zahl ein \n";
    	cin >> Zahl;
    
    
    	                                              //Ausgabe in Binär
    	cout << "Die Zahl der einzelen Bits: \n";
    
    	for (int i = AnzahlBits - 1; i >= 0; i--)
    	{
    		if (Zahl & (1 << i))
    
    		    std::cout << "1";
    
    		else
    			std::cout << "0";
    	}
    	std::cout << std::endl;
    
    	return 0;
    
    
    	system("pause");
    
    
    
    }
    

  • Mod

    @Pac sagte in Dezimalzahl in Binärzahl:

    Ich versuche Gerade Dezimalzahlen als Binärzahlen darzustellen. Es sollen die ersten 8 Bit dargestellt und für jedes Bit eine Variable benutzen werden.

    Ahh! Wieso das denn? Kein Wunder, dass du dazu nichts findest, denn das wäre ja auch der reine Wahnsinn! Bist du sicher, dass du die Aufgabe richtig verstehst? Mit einem Array wäre das ein Zweizeiler (eine Zeile Schleife, eine Zeile Rechnung), aber mit Einzelvariablen musst du den Code einfach 8x kopieren und von Hand die Werte anpassen. Klingt nicht gerade nach einer sinnvollen Übung.

    Zum Thema: Da du, wie gesagt, bloß den gleichen Code 8x kopieren und modifizieren müsstest, vergiss erst einmal die 8-fache Ausführung und konzentriere dich auf das Einzelproblem: Um das X'te Bit einer Zahl zu erhalten, musst du die Zahl um X Bits nach rechts verschieben, und dann mit 1 Ver-UND-en. Letzteres gibt dir den Wert des rechtesten Bits, und da du vorher um X nach rechts geschoben hast, ist das dann das X'te Bit.
    "Verschieben", und "UND" sind Dinge, die du direkt nach C++ übersetzen kannst. Zeig mal, wie du das machen würdest! Die Antwort ist ein einzelner, kurzer Ausdruck. Denk nicht zu kompliziert! Und es ist nicht dein jetziger Ausdruck, aber so ähnlich.

    (Abseits der Übungsaufgabe gibt es natürlich std::bitset in der Standardbibliothek, das die Aufgabe direkt löst, ohne dass man selber etwas tun muss)



  • @Pac sagte in Dezimalzahl in Binärzahl:

    Was ist eine low Bit Position?

    The lowest bit ist das Bit mit der niedrigsten Signifikanz, mit der geringsten Auswirkung auf den Wert:

    11001001
    ^      ^
    |      |
    |      least significant (lowest) bit
    most significant (highest) bit
    

    analog:

    11001001 ... 11001001 11001001
    \______/              \______/
        |                     |
        |                     least significant (lowest) byte
       most significant (highest) byte
    


  • Vielen dank für deine Antwort

    Also die Aufgabe lautet genau wie folgt:

    1. Definieren Sie für jedes Bit eigene Variable (Hinweis: Arrays dürfen hier nicht verwendet werden).
    2. Maskieren Sie die einzelnen Bits aus der Zahl und schieben Sie diese jeweils an Low-Bit-Position

    Das Testat war aber eben gerade und ich hab's zum Glück bestanden. Werde mir das morgen nochmal alles anschauen 🙂



  • @Pac sagte in Dezimalzahl in Binärzahl:

    Maskieren Sie die einzelnen Bits aus der Zahl und schieben Sie diese jeweils an Low-Bit-Position

    Ja, und wo ist das Problem? Wobei die Formulierung der Aufgabe fubar ist. Zuerst schieben, dann "maskieren" [sic].



  • Dem Testatgeber kannst ja mal herzlichen Glückwunsch ausrichten euch absolut 0 beigebracht zu haben, was ihr in der Praxis sinnvoll einsetzen könnt und nur eure Zeit verschwendet. Naja, oder lieber nicht, solche Leute sind oft nicht einsichtig und lassen das dann an dir aus - wenn irgendmöglich verlasse diesen Kurs.



  • @Pac sagte in Dezimalzahl in Binärzahl:

    1. Definieren Sie für jedes Bit eigene Variable (Hinweis: Arrays dürfen hier nicht verwendet werden).

    Echt, dem hätte ich wahrscheinlich aus Trotz irgendeine Makro-Magie inklusive Makro-Loop an den Kopf geworfen, die zwar individuelle Variablen generiert, sich aber dennoch wie ein Array anfühlt 😛



  • @Finnegan
    Mach doch, ich bin gespannt 😉


Anmelden zum Antworten