djb Postad 9 oktober, 2006 Share Postad 9 oktober, 2006 Här är en funktion som gör om binära tal till decimala. Helt enkelt lite tidsfördriv som jag delar med mig av. info: biblioteken math.h och iostream behövs för kompilering. long double binarTILLdecimal (char inmatning[50]) { int rakneverk=50, temp=-52, nolletta, exponent=0; //exponenten börjar på 0, d v s t.ex. när uträkningen kommer är exponenten för fjärde long double sum=0; //talet '3'. 2^0=1, (första talet) sum är summan allteftersom while (temp==-52) //-52 är integern för ett obestämt tecken i char-harrangen. { temp=inmatning[rakneverk]; //rakneverk börjar på 50 och sjunker. rakneverk--; //här minimeras charen så inte alla 50 tecken kommer med. } for (; rakneverk>=0; rakneverk--) { nolletta=inmatning[rakneverk]-48; //här tar jag minus 48 för att det är någon skum char- till int-konvertering. if (nolletta==0 || nolletta==1) { sum=sum+nolletta*pow(2, exponent); //t.ex tredje talet (etta. de andra två har vart nollor): sum=0+1*2^2(=4) exponent++; } else rakneverk=-2; } if (rakneverk==-1) return(sum); else return(false); } Länk till kommentar Dela på andra webbplatser More sharing options...
lizardKng Postad 10 oktober, 2006 Share Postad 10 oktober, 2006 En smula kortare variant är att använda funktionen strtol (finns i stdlib); long int x = strtol(argv[1], NULL, 2); Ett litet binär-till-decimal-konverteringsprogram blir då: #include <stdlib.h> #include <stdio.h> int main(int argc, char*argv[]) { if(argc!=2) return(-1); long int x = strtol(argv[1], NULL, 2); printf("%ld\n", x); return 0; } Den klarar för övrigt av alla baser mellan 2 och 36. Länk till kommentar Dela på andra webbplatser More sharing options...
djb Postad 10 oktober, 2006 Trådskapare Share Postad 10 oktober, 2006 Fantastiskt. Det hade jag ingen aning om. Jag tror nog i och för sig att det var lärorikt för mig att göra min svåra väg ändå, även om det inte var den bästa. Länk till kommentar Dela på andra webbplatser More sharing options...
lizardKng Postad 10 oktober, 2006 Share Postad 10 oktober, 2006 Jag tror nog i och för sig att det var lärorikt för mig att göra min svåra väg ändå Absolut! Och dessutom roligare Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.