Binaire en decimale zijn twee verschillende manieren om gehele getallen te vertegenwoordigen. In C-programmeertaal , zijn binaire getallen meestal opgeslagen in tekenreeksen of een ander soort van array. Tekenreeksen in C worden benoemd door een karakter pointer die wijst op de lage order bit van het binaire string. De string eindigt met de speciale C teken " \\ 0 " als gevolg van de hoge orde bit . Het omzetten van deze binaire strings in het equivalent integer waarde is een eenvoudig programma om te schrijven - ofwel iteratief of recursief . Instructies 1 Ontwikkel een duidelijke algoritme voor de conversie voordat u begint met het schrijven van code . U zult twee variabelen voor het algoritme nodig : een accumulator bij te houden van de resultaten en een "power " variabele bij te houden van de toenemende macht van 2 die de verschillende bit posities in het binaire getal beschrijft behouden blijven . Bijvoorbeeld , het getal 13 wordt opgeslagen in binaire als 1101 . Dit nummer is eigenlijk ( 1 X 2 ^ 3 ) + ( 1 x 2 ^ 2 ) + ( 0 X 2 ^ 1 ) + ( 1 X 2 ^ 0 ) of 8 + 4 + 0 + 1 = 13 . Door de manier waarop binaire cijfers worden opgeslagen in C , zullen we beginnen bij de lage orde bits en elke bit door toenemende waarden van de kracht variabele vermenigvuldigen en het in de accumulator te voegen. 2 beschrijven de functie in pseudocode , test de pseudocode met een paar voorbeelden , passen de pseudocode indien noodzakelijk en schrijf de C -code rechtstreeks van de pseudocode . Functienaam : binary2integer . Input : een pointer naar een soort karakter . Uitgang van een geheel getal . Start de functie door het definiëren van twee integer variabelen : acc - een accumulator en pow - een waarde die verdubbelt bij elke stap in het conversieproces . Stel vlgs 0 en pow tot 1 . Blijven doen de drie statements in de lus tot de wijzer wijst naar de ' \\ 0 ' karakter , dan terug de waarde van de acc als de waarde van de functie . De drie lus verklaringen zijn : Als de wijzer wijst naar een van de wijzer " 1 , " de waarde van pow toevoegen aan acc , het dubbele van de waarde van pow en increment te wijzen op de volgende bit . 3 Zet de pseudocode naar C -code : int binary2integer ( char * p ) { int acc, pow ; acc = 0 ; pow = 1 , terwijl ( p * = ' \\ 0 ' ) { if ( p * == '1 ' ) acc + = pow , pow * = 2 ; p + + } return acc } . Deze code dient te worden getest met verscheidene voorbeelden . Zorg ervoor om te controleren grenswaarden zoals 0 en 1 , alsmede met een verscheidenheid van waarden als 11111 , 00000 , 10101 en 01010 .
|