Binary og desimal er to forskjellige måter å representere hele tall . I C-programmering , er binære tall som regel lagret i tegnstrengene eller annen form for array. Tegnstrengene i C er oppkalt etter et tegn peker som peker til den lave rekkefølge bit av den binære strengen . Strengen slutter med den spesielle C tegnet "\\ 0 " etter høy orden bit . Konvertere disse binære strenger til tilsvarende beløp heltall er et enkelt program for å skrive - enten iterativt eller rekursivt . Instruksjoner
en
Utvikle en klar algoritme for konvertering før du begynner å skrive kode . Du trenger to variabler for algoritme : en akkumulator å holde orden på resultatene og en "power " variabel for å holde oversikt over den økende strøm av to som beskriver de forskjellige bits posisjoner i det binære tallet . For eksempel er det hele tall 13 som er lagret i binær som 1101 . Dette nummeret 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å grunn av måten binære siffer lagres i C , vil vi starter på lav for bit og multiplisere hver bit av den økende verdier av kraft variabel og legge det inn i akkumulator.
2
Beskriv funksjonen i pseudokode , teste pseudokode med noen eksempler , justere pseudokode om nødvendig og skrive C-kode direkte fra pseudokode . Funksjon navn : binary2integer . Inngang: en peker til et tegn type. Ut et heltall . Starte funksjonen ved å definere to heltallsvariabler : ACC - en akkumulator og pow - en verdi som dobler på hvert trinn i konverteringen. Sett acc til 0 og pow til en . Fortsette å gjøre de tre utsagnene i sløyfen til pekeren peker til " \\ 0 " karakter, deretter returnere verdien av acc som verdien av funksjonen. De tre sløyfe utsagn er: Hvis pekeren peker til en " 1 ", legger verdien av pow til acc , doble verdien av pow og tilvekst pekeren å peke til neste 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 koden bør testes med flere eksempler . Pass på å sjekke for grenseverdier som 0 og 1, samt med en rekke verdier som 11111, 00000 , 10101 og 01010 .