Τελαστές χειρισμού ΒITS

Οι τελεστές αυτοί χρησιμοποιούνται γιά την εκτέλεση λογικών ή αριθμητικών 
πράξεων σε επίπεδο bit. Οι τελεστές χειρισμού bits είναι οι δυαδικοί

     &  λογικό και (AND): αν και τα δύο bits είναι 1, το αποτέλεσμα είναι 1.
     |  λογικό συζευκτικό ή (OR): αν ένα τουλάχιστο από τα δύο bits είναι 1, το 
αποτέλεσμα είναι 1.
     ^  λογικό διαζευκτικό ή (XOR): αν ένα μόνο από τα δύο bits είναι 1, το 
αποτέλεσμα είναι 1.

και ο μοναδικός

     ~  λογική αντιστροφή (NOT): αν το bit είναι 1 το αποτέλεσμα είναι 0, αν το 
bit είναι 0, το αποτέέσμα είναι 1.

Οι τελεστές χειρισμού bits εφαρμόζονται συνήθως σε μεταβλητές των τύπων 
char, unsigned int και int. Παραδείγματα χειρισμών bits δίνονται στο 
πρόγραμμα του αρχείου BITOPS.C. Το πρόγραμμα δηλώνει τον χαρακτήρα mask 
και τον πίνακα 5 χαρακτήρων number που χρησιμοποιούνται σαν τελούμενα των 
εκφράσεων ενώ οι χαρακτήρες and,or,xor,inv αποθηκεύουν τα αποτελέσματα. 
Ο πίνακας number αρχικοποιείται με εκχωρήσεις δεκαεξαδικών τιμών που 
γράφονται στη μορφή 

0Xδεκαεξαδικά ψηφία

δηλαδή κάποια από τα ψηφία 0, 1, 2, ..., 9, Α, Β, ..., F. Επειδή η μεταβλητή είναι του 
τύπου χαρακτήρα γράφουμε δύο δεκαεξαδικά ψηφία αφού τα καθένα αντιστοιχεί 
σε 4 bits. Θα μπορούσαμε να χρησιμοποιήσουμε οκταδικά ψηφία στη μορφή

0οκταδικά ψηφία

δηλαδή κάποια από τα ψηφία 0, 1, 2, ..., 7. Επειδή ενα οκταδικό ψηφίο αντιστιοιχεί 
σε τρία bits η αρχικοποίηση του byte απαιτεί 3 οκταδικά ψηφία, όπου το πλέον 
σημαντικό μπορεί να πάρει μόνο τις τιμές 0, 1, 2, 3.                             

Στη συνέχεια αρχικοποιούμε και τη μεταβλητή mask και εκτελούμε δύο σειρές 
πράξεων με τους διάφορους τελετές λειτουργιών bit. Τα αποτελέσματα 
εφανίζονται στην οθόνη όπως παρακάτω. Να σημειωθεί οτι όπως έχουμε ήδη πει 
σε προηγούμενο παράδειγμα η εκτύπωση σε μορφή δεκαεξαδικού μετατρέπει το 
αριθμό αυτόματα σε ακέραιο και επεκτείνει το πιό σημαντικό bit του πρώτου byte 
στο νέο byte. Γιά να αποφύγουμε αυτή τη περιπλοκή θα έπρεπε να εκτελέσουμε 
τις πράξεις με ακεραίους.


    nmbr   mask    and      or    xor       inv
          0         f        0        f        f        ffff
        11         f        1      1f      1e      ffee
        22         f        2      2f      2d      ffdd
        44         f        4      4f      4b      ffbb
      ff88         f        8    ff8f    ff87        77
        ffff         f        f      ffff     fff0          0

           0      22       0      22     22       ffff
         11      22       0      33     33      ffee
         22      22     22      22       0     ffdd
        44       22       0      66     66     ffbb
      ff88       22       0    ffaa    ffaa       77
       ffff        22     22     ffff    ffdd         0

Περιεχόμενα Κεφαλαίου