Binary und Dezimalstellen gibt zwei verschiedene Möglichkeiten , um ganze Zahlen darzustellen. In der Programmiersprache C , in der Regel sind binäre Zahlen in Zeichenfolgen oder einer anderen Art von Array gespeichert . Zeichenketten in C werden durch ein Zeichen Zeiger namens , der auf das niederwertige Bit des Binär-String . Der String endet mit der speziellen C Zeichen "\\ 0" nach dem höherwertigen Bit . Konvertieren diese binären Strings in die entsprechende Integer-Wert ist ein einfaches Programm zu schreiben - entweder iterativ oder rekursiv . Anleitung
1
Entwickeln Sie einen klaren Algorithmus für die Umwandlung vor Ihnen das Schreiben von Code beginnen . Sie müssen zwei Variablen für den Algorithmus : ein Akkumulator , den Überblick über die Ergebnisse und ein "Power "-Variable , den Überblick über die wachsende Macht der 2 , die die verschiedenen Bit-Positionen in der binären Zahl beschreibt halten halten . Zum Beispiel ist die ganze Zahl 13 in binäre als 1101 gespeichert. Diese Zahl ist tatsächlich ( 1 X 2 ^ 3 ) + ( 1 X 2 ^ 2) + ( 0 X 2 ^ 1 ) + (1 × 2 ^ 0) oder 8 + 4 + 0 + 1 = 13 . Aufgrund der Art binären Ziffern in C gespeichert sind , werden wir an der niederwertige Bit werden ab und multipliziert jedes Bit durch die steigenden Werte der Macht variable und Hinzufügen in den Akkumulator .
2
Beschreiben die Funktion in Pseudocode , testen Sie den Pseudocode mit einigen Beispielen , stellen Sie den Pseudocode , wenn notwendig und schreiben Sie die C-Code direkt aus dem Pseudocode . Name der Funktion : binary2integer . Input: ein Zeiger auf einen Charakter-Typ . Ausgang eine ganze Zahl ist. Starten Sie die Funktion durch die zwei Integer-Variablen : acc - ein Akkumulator und pow - ein Wert, der bei jedem Schritt in der Umwandlung verdoppelt . ACC auf 0 bis 1 und pow . Wiederholen Sie die drei Anweisungen in der Schleife , bis der Zeiger auf das "\\ 0" Charakter zeigen wird , dann wieder den Wert der nach dem Wert der Funktion. Die drei Loop- Aussagen sind : Wenn der Zeiger auf eine "1 ", fügen Sie den Wert von pow zu acc, den doppelten Wert von pow und Schrittweite der Zeiger auf das nächste Bit hinweisen
. 3
umrechnen Pseudocode in C-Code : int binary2integer (char * p) {int acc, pow , acc = 0; pow = 1; while ( p * = '\\ 0' ) { if ( p == * '1 ') acc + = pow , pow * = 2; p + + } return } acc . Dieser Code sollte mit mehreren Beispielen getestet werden. Achten Sie darauf, für Grenzwerte wie 0 und 1 zu überprüfen, sowie mit einer Vielzahl von Werten wie 11111 , 00000 , 10101 und 01010 .