Ist das richtig?



  • Ich habe ein kleines Programm geschrieben, das mir nach der Eingabe einer Zahl den binären Wert liefert. Es funktioniert, nur weiss ich nicht, ob die Ausgabe richtig ist.

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    void main()
    {
        int value;
        int binary[8];
    
        cout<<"value: ";
        cin>>value;
    
        for(int i=7;i>=0;--i) {
            binary[i]=value%2;
            value/=2;
    
            // output
        for(int i=0;i<8;++i)
            cout<<binary[i];
        }
    
        getchar();
    }
    

    Ist relativ klein. 🙂



  • Ich hab da eine geschweifte Klammer vergessen, nur so zur Info 💡



  • Doch nicht, mein Fehler!



  • Statt dem Array würde ich lieber ne std::list benutzen, dann kann die Binärzahl auch mehr als 8 Stellen haben, die größte Zahl ist so 255.



  • Wenn ich das richtig sehe, wird für jede Binärstelle einmal das ganze Array ausgegeben (noch mit uninitialisierten Werten). Also sitzen die Klammern doch verkehrt.



  • Bashar schrieb:

    Wenn ich das richtig sehe, wird für jede Binärstelle einmal das ganze Array ausgegeben (noch mit uninitialisierten Werten). Also sitzen die Klammern doch verkehrt.

    Ah, danke, werd das gleich mal korrigieren. Der Rest ist dann wohl richtig.



  • void main wäre noch zu bemängeln.
    int main ist richtig.



  • Man kann es aber viel kürzer schreiben:

    for(int n = 0; n < anzahl; ++n)
       std::cout << (zahl & (1 << n)) >> n;
    

    Ist evtl. verkehrtrum, dann int n = anzahl -1; n >= 0; --n

    MfG MAV


Log in to reply