αναπτύξει μια σαφή αλγόριθμο για τη μετατροπή , πριν να αρχίσετε να γράφετε κώδικα . Θα χρειαστείτε δύο μεταβλητές για τον αλγόριθμο : ένας συσσωρευτής να παρακολουθείτε τα αποτελέσματα και μια "δύναμη" μεταβλητή να παρακολουθείτε την αυξανόμενη δύναμη του 2 που περιγράφει τις διαφορετικές θέσεις bit στο δυαδικό αριθμό . Για παράδειγμα, ο ακέραιος 13 αποθηκεύεται σε δυαδική ως 1101 . Ο αριθμός αυτός είναι στην πραγματικότητα ( 1 Χ 2 ^ 3 ) + ( 1 Χ 2 ^ 2 ) + ( 0 Χ 2 ^ 1 ) + ( 1 Χ 2 ^ 0 ) ή 8 + 4 + 0 + 1 = 13 . Λόγω του τρόπου δυαδικά ψηφία αποθηκεύονται σε C , θα πρέπει να αρχίζουν σε λίγο χαμηλής τάξης και πολλαπλασιάζοντας κάθε bit από την αύξηση των τιμών της μεταβλητής δύναμης και να προστεθεί στο συσσωρευτή . 2
Περιγράψτε η λειτουργία σε ψευδοκώδικα , ελέγξτε το ψευδοκώδικα με μερικά παραδείγματα , ρυθμίστε το pseudocode εάν είναι απαραίτητο και να γράψει τον κώδικα C απευθείας από τον ψευδοκώδικα . Όνομα της συνάρτησης : binary2integer . Είσοδος : ένα δείκτη σε έναν τύπο χαρακτήρα . Έξοδος ένας ακέραιος . Ξεκινήστε τη λειτουργία ορίζοντας δύο ακέραιες μεταβλητές : acc - ένας συσσωρευτής και pow - μια τιμή που διπλασιάζεται σε κάθε στάδιο κατά τη μετατροπή . Ορισμός acc στο 0 και στο 1 pow . Συνεχίστε να κάνετε τις τρεις δηλώσεις στο βρόχο μέχρι ο δείκτης να είναι στραμμένος προς το χαρακτήρα " \\ 0 " , τότε επιστρέφει την τιμή του acc ως τιμή της συνάρτησης . Οι τρεις δηλώσεις βρόχου είναι : Αν ο δείκτης δείχνει σε " 1 ", προσθέστε την τιμή της pow να acc , διπλασιάσει την αξία της pow και αυξήσετε το δείκτη στο σημείο στο επόμενο κομμάτι
εικόνων . 3
Μετατρέψτε το ψευδοκώδικα στον κώδικα C : int binary2integer ( char * p) { int acc , pow ? acc = 0 ? pow = 1 ? while ( p * = ' \\ 0 ' ! ) {if ( p == * '1 ' ) acc + = pow ? pow * = 2 ? p + + } } acc επιστροφής . Αυτός ο κωδικός θα πρέπει να ελέγχεται με πολλά παραδείγματα . Να είστε βέβαιος να ελέγξει για τις οριακές τιμές , όπως 0 και 1 , καθώς και με μια ποικιλία των τιμών , όπως 11111 , 00000 , 10101 και 01010 .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα