Binary og decimal er to forskellige måder at repræsentere hele tal . I C programmering er binære tal som regel gemt i tegnstrenge eller anden form for array. Tegnstrenge i C er navngivet af en karakter pointer , der peger på den lave orden bit på den binære streng. Snoren slutter med den specielle C tegnet "\\ 0" efter høj orden bit. Konvertering af disse binære strenge i den tilsvarende heltal værdi er et simpelt program til at skrive - enten iterativt eller rekursivt . Instruktioner
1
udvikle en klar algoritme til konvertering , før du begynder at skrive kode. Du skal bruge to variabler for algoritmen : en akkumulator til at holde styr på resultaterne og en " magt" variabel til at holde styr på den stigende effekt på 2 , der beskriver de forskellige bit- positioner i det binære tal . For eksempel er det hele tal 13 lagret i binær som 1101 . Dette nummer er faktisk ( 1 X 2 ^ 3) + (1 x 2 ^ 2) + (0 X 2 ^ 1) + (1 X 2 ^ 0 ) eller 8 + 4 + 0 + 1 = 13 . På grund af den måde, binære cifre er gemt i C , vil vi starter ved lav orden bit og multiplicere hver bit af de stigende værdier af magt variabel og tilføjer det i akkumulatoren .
2
Beskriv funktionen i pseudokode , teste pseudokode med nogle eksempler , justere pseudokode om nødvendigt, og skrive C-kode direkte fra pseudokode . Funktion navn : binary2integer . Input: en pointer til et tegn type. Udsende et heltal . Start funktionen ved at definere to heltal variabler: acc - en akkumulator og pow - en værdi, der fordobler på hvert trin i konverteringen . Sæt iht. 0 og pow til 1. . Fortsæt med at gøre de tre udsagn i løkke, indtil markøren peger på "\\ 0" karakter, så returnerer værdien af den acc som værdien af funktionen. De tre loop udsagn er: Hvis markøren peger på et "1 ", tilføjer værdien af pow til acc , den dobbelte værdi af pow og tilvækst markøren til at pege på den næste bit
. 3
Konverter pseudokode til C-kode : int binary2integer (char * p ) { int acc , pow , acc = 0; pow = 1, mens (p * = '\\ 0 '! ) {if (p * == '1 ') acc + = pow , pow * = 2 , p + + } retur acc } . Denne kode skal testes med flere eksempler. Vær sikker på at tjekke for grænseværdier som 0 og 1 , samt med en række værdier som 11111 , 00000, 10101 og 01010 .