Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ελεγχος των bit ενός byte

Îåêßíçóå áðü ôï ìÝëïò aristofanisl. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 30-06-2008, 11:51. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-06-2008, 11:11 43162

    Ελεγχος των bit ενός byte

    Καλημέρα.
    Φτιάχνω μία εφαρμογή σε C# η οποία διαβάζει δεδομένα από ένα αισθητήρα μέσω της σειριακής θύρας.
    Τα δεδομένα τα παίρνω σε μορφή byte.Θέλω σε συγκεκριμένα bytes να διαβάσω τις τιμές των bits τους γιατί είναι flags για κάποια error που μπορεί να παρουσιαστούν.
    Τα bit είναι 8 και είναι της μορφής:
    BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

    Παρακαλώ help me :D
    Ευχαριστώ
  •  30-06-2008, 11:51 43165 σε απάντηση της 43162

    Απ: Ελεγχος των bit ενός byte

    Κάνε απλά ένα bitwise AND ( & ) μεταξύ της τιμής πο σου έρχεται και του bit που σε ενδιαφέρει. Το αποτέλεσμα θα έχει 1 σε κάθε bit όπου τόσο το flag όσο και το incoming byte έχουν 1. Έτσι, π.χ. το 10001000 & 00001000 θα επιστρέψει 00001000. Αν θέλεις να συγκρίνεις πολλά flags ταυτόχρονα, μάζεψε τα πρώτα με ένα bitwise OR ( |) και μετά κάνε το AND με το incoming byte. Αν το αποτέλεσμα είναι ίδιο με το flag, σημαίνει ότι το incoming byte είχε 1 σε όλα τα σημεία όπου τα flags ήταν 1. 
    Για περισσότερα τέτοια κόλπα, η Ψηφιακή Λογική του 1ου ή 2ου έτους (ανάλογα με τη σχολή) καλύπτει πολύ περισσότερα.

    Παράδειγμα:

    class Program
    {
       static void Main(string[] args)
       {
          byte inByte = 0x15; // 00010101
          byte flagByte = 0x10 | 0x01; // 0001000 | 00000001
          int result = inByte & flagByte;
          Console.WriteLine("{0:X}",result); // 00010001
       }
    }

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems