Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α4.13 · Άρτια Bits

Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #8, Θέμα 1 · Δυσκολία ★☆☆ · programming · Κεφάλαια: 4, 12

Πρόγραμμα: parity.c

Γράψτε ένα πρόγραμμα που παίρνει δεκαδικούς ακεραίους ως ορίσματα από την γραμμή εντολών και τυπώνει για κάθε έναν από αυτούς εάν έχει έναν άρτιο αριθμό από bits που είναι 1 (even parity). Για παράδειγμα ο αριθμός 5 είναι ο 101 στο δυαδικό και επομένως έχει άρτιο αριθμό από bits που είναι 1. Αντίθετα ο αριθμός 7 (111 στο δυαδικό) έχει περιττό αριθμό από bits που έχουν τεθεί στο 1. Παράδειγμα εκτέλεσης ακολουθεί:

$ ./parity 5 7 64 65 987234 97823462
Number 5 has even parity
Number 7 does not have even parity
Number 64 does not have even parity
Number 65 has even parity
Number 987234 has even parity
Number 97823462 does not have even parity
$ ./parity 92873847981279843
Number 92873847981279843 has even parity
$ ./parity 92873847981279844
Number 92873847981279844 does not have even parity

Υπόδειξη

Μετρήστε τα bits που είναι 1 με μάσκα και ολίσθηση (&, >>) μέχρι ο αριθμός να γίνει 0. Προσέξτε ότι τα παραδείγματα έχουν αριθμούς πάνω από 2^31, άρα χρειάζεστε 64-bit τύπο (long long / strtoll) και έλεγχο ότι κάθε όρισμα είναι έγκυρος ακέραιος.

Αριθμός στον οδηγό: Α4.13 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2023-fall-ex8-q1 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex8-q1.html · Markdown (GitHub)