Hvordan konvertere Binary til et heltall i C Programming

Hvordan konvertere Binary til et heltall i C Programming


Binary og desimal er to forskjellige måter å representere hele tall. I C-programmering, er binære tall vanligvis lagret i tegnstrenger eller noen annen form for array. Tegnstrenger i C er oppkalt etter et tegn peker som peker til lavordensbiten av binær streng. Strengen slutter med den spesielle C tegnet "\ 0" etter høy ordre litt. Konvertere disse binære strenger til tilsvarende beløp heltallsverdi er et enkelt program for å skrive - enten iterativt eller rekursivt.

Bruksanvisning

1 Utvikle en klar algoritme for konvertering før du begynner å skrive kode. Du trenger to variabler for algoritmen: en akkumulator for å holde orden på resultatene og en "power" variable å holde styr på den økende strømmen av 2 som beskriver de ulike bit stillinger i binært tall. For eksempel er det hele tall 13 som er lagret i binær som 1101. Dette tall 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 tall er lagret i C, skal vi starter ved lav ordens bit og multiplisere hver bit av den økende verdier av strøm variabel og legge den inn i akkumulatoren.

2 Beskrive funksjonen i pseudokode, test pseudokode med et par eksempler, juster pseudo om nødvendig, og skriver den C-kode direkte fra pseudokode. Funksjonsnavn: binary2integer. Inngang: en peker til en karaktertype. Utgang et heltall. Start funksjonen ved å definere to heltallsvariabler: ACC - en akkumulator og pow - en verdi som dobler på hvert trinn i konverteringen. Sett i hht 0 og pow til 1. Fortsett å gjøre de tre utsagnene i sløyfen før pekeren peker til "\ 0" tegn, deretter returnere verdien av acc som verdien av funksjonen. De tre sløyfe uttalelser er: Hvis pekeren peker til en "en," legger verdien av pow å acc, doble verdien av pow og øke pekeren å peke på den neste bit.

3 Konverter pseudo til C-kode: int binary2integer (char s) {int acc, pow; acc = 0; pow = 1; while (p = '\ 0') {if (p == '1') acc + = pow; pow = 2; p ++} avkastning iht}. Denne koden skal testes med flere eksempler. Husk å sjekke for grenseverdier som 0 og 1, samt med en rekke verdier som 11111, 00000, 10101 og 01010.

Hint

  • Den rekursive versjonen bruker pow som en av variablene og dispenserer med acc helt. Samtaler se slik ut: RecursiveB2I (p 1) og funksjonen ser slik ut: int RecursiveB2I (char * p int pow) {if p * == '\ 0' deretter returnere 0; ? Retur (p * == '1') pow: 0 + RecursiveB2I (p 2 * pow}
  • Hvis binære tall er lagret i et annet format, vil funksjonen være forskjellige, men den grunnleggende ideen er den samme.