2017-10-24 1 views
0

So lernen wir C++ in der Schule und unser Lehrer sagte uns, ein Programm zu machen, das binäre in Dezimalzahlen umwandelt.Binary to Dezimal Übung in der Schule

Das ist, was ich in Haupt schrieb:

int i = 0, e = 0,n = 00001111 , c; 
while (n > 0) 
{ 
    cout << "n= " << n << endl << "e= " << e << endl; 

    c = n % 2; 
    n = n/10; 
    if (c == 1) 
    { 
     e = e + (int)pow(c * 2, i); 
    } 
    i++; 
} 
cout << e << endl; 

system("pause"); 

Ausgang ist here

Meine Frage ist, warum ist n = 585, wenn ich 00001111 schrieb?

Auch tut mir leid, wenn die Tags irreführend sind. Ich bin neu darin.

+0

Bereits getan, aber der Wert von n ist 585 der zweite ich gebe ihm einen Wert bei der Deklaration. Ich bin auch nicht so erfahren mit dem Debugger. –

+0

00001111 ist oktal, nicht dezimal. – willll

+0

Also liest der Compiler 00001111 als oktal? Es soll eine 8-Bit-Binärzahl sein, aber als Dezimalzahl geschrieben, so dass sie durch 10 geteilt werden kann. Gibt es eine Möglichkeit, den Compiler dazu zu zwingen, den Wert als Dezimalzahl zu lesen? –

Antwort