Ich kodierte heute schnell (mit Hilfe der Suche nach verschiedenen Google-Suchen) nach einer grundlegenden Zuordnung zum Konvertieren von Binär in Dezimal. Dies ist nur der Teil, der in das Zweierkomplement konvertiert wird.Wie konvertiere ich Binär in Dezimal?
void binary_to_decimal (char *value){
int i;
int numdigits = strlen(value);
int c=0;
char nvalue[numdigits];
char sum[numdigits];
char b[numdigits];
for(i=0;i<numdigits;i++)
b[i]='0';
b[numdigits-1]='1';
if (numdigits%4==0 && value[0]=='1') {
for(i=0;i<numdigits;i++){
if(value[i]=='1')
nvalue[i]='0';
else if(value[i]=='0')
nvalue[i]='1';
}
for(i=0;i<numdigits;i++)
printf("%c", nvalue[i]);
printf("\n");
for(i=0;i<numdigits;i++)
printf("%c", b[i]);
printf("\n");
for(i=numdigits-1; i>=0; i--){
nvalue[i]=nvalue[i]-'0';
b[i]=b[i]-'0';
sum[i]=(nvalue[i]^b[i]^c)+'0';
c=(nvalue[i]&b[i]) | (b[i]&c) | (nvalue[i]&c);
}
if (c!=0)
sum[0]=1;
for(i=0;i<numdigits;i++)
printf("%c", sum[i]);
}
else {
}
printf("\n");
}
Natürlich könnte ich es aufräumen, aber das ist nicht das, worüber ich mir Sorgen mache. Das scheint zu funktionieren, aber ich fühle es anders, etwas zum Arbeiten zu bringen und jedes Detail zu verstehen, damit es funktioniert.
Ich würde mich über jede Rückmeldung zu diesem Thema freuen. Werden die Dinge mich einholen?
Ich werde einmal über den Code gehen und versuchen, es zu verstehen, aber jede Hilfe wäre willkommen.
Ich glaube, Sie den Unterschied zwischen ihm immer jedes Detail zu arbeiten und zu verstehen, wie es funktioniert. Sie können Glück haben, etwas zusammen zu hacken. Übrigens solltest du nicht zu oft googeln, wenn du dir Sorgen um Verständnis machst. Finde es selbst heraus und mach dir keine Sorgen um "Schnelligkeit". – ChiefTwoPencils
Ich denke, Sie müssen genauer sein und genau die Linie (n) angeben, die Sie nicht verstehen. BTW: Vielleicht http://codereview.stackexchange.com/ wäre ein guter Platz zum ausprobieren – 4386427
Sie können Tests schreiben, um Ihre Funktionen zu testen. Ich verwende das Prüfrahmenwerk, um mein C zu testen https://libcheck.github.io/check/ –