Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Χαιρεται!

Προσφατα ξεκινησα να ασχολουμαι με τον προγραμματισμο συγκεκριμενα με την python. Εχω ξεκινησει να διαβαζω το "A byte of python". Θελω να ρωτησω που μπορει να μας βοηθησει το να κανουμε πραξεις με αυτους τους τελεστες στο δυαδικο συστημα &,^,Ι μεσα σε ενα προγραμμα; Γενικα γιατι πρεπει να ξερουμε καποια πραγματα στο binary code; :huh:

  • Like 1
Δημοσ. (επεξεργασμένο)

Δεν είναι Binary code το να χρησιμοποιείς το δυαδικό. Το χρησιμοποιείς αριθμητικά. Το Binary code είναι opcodes για τον επεξεργαστή. Τι σε βοηθάει όμως; Πολλές φόρες χρειάζεται να δώσεις νούμερο που έχει σημαίες, δηλαδή bit που σημαίνουν κάτι. Σε 8 bit έχεις οκτώ σημαίες.

π.χ.

δες την συνάρτηση DrawText των Windows, η οποία μπορεί να κληθεί από οποιαδήποτε πρόγραμμα

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162498%28v=vs.85%29.aspx

 

δες εδώ πως χρησιμοποιείται:

https://support.microsoft.com/en-us/kb/154517

 

Παρατηρούμε ότι η παράμετρος uFormat είναι τύπου uint. Και εκεί όλα τα bit είναι σημαίες. Στον δεύτερο σύνδεσμο αναφέρονται μερικές. Π.χ. DT_WORDBREAK = &H10  και το &Η10 μπορείς να το δεις σε άλλη γλώσσα ως το 0x10 που είναι το 16. (1*2^4+0*2^0)

 

Για να χειριστούμε τις σημαίες έχουμε τους χειριστές AND και OR. Π.χ. αν θέλουμε να δούμε αν υπάρχει το 0x10 τότε κάνουμε AND με αυτό τον αριθμό. Όπου έχει 0 θα πάρουμε 0 και αν έχει 0 στη θέση του 5 bit τότε  θα πάρουμε 0.

Με το OR προσθέτουμε σημαίες, γιατί στην ουσία όσες φορές και να προσθέσουμε το 0x10 με την OR δεν θα αλλάξει παρά μόνο μια φορά το bit 5 (την πρώτη αν ήταν 0 αλλιώς ούτε αυτήν).

Το Xor δεν χρησιμοποιείται στις σημαίες, αλλά μπορεί να μας δώσει έναν απλό τρόπο "κλειδώματος", γιατί με κλειδί Α αν κάνουμε στο Β το Α XOR B θα πάρουμε έστω το Γ το οποίο με Γ XOR A θα πάρουμε το αρχικό B.

Μπορεί κάποιος άλλος να προσθέσει και άλλες χρησιμότητες, δεν τελειώνουν εδώ. Φαίνεται ξεκάθαρα ότι μιλάμε για αριθμητική χρήση, αλλά το τελικό προϊόν ποικίλει, από σημαίες για να τυπώσουμε με κάποιο τρόπο γράμματα, όπως στην DrawText, μέχρι τη κωδικοποίηση μηνυμάτων,

Επεξ/σία από M2000
  • Like 1
Δημοσ.

Θελω να ρωτησω που μπορει να μας βοηθησει το να κανουμε πραξεις με αυτους τους τελεστες στο δυαδικο συστημα &,^,Ι μεσα σε ενα προγραμμα; Γενικα γιατι πρεπει να ξερουμε καποια πραγματα στο binary code; :huh:

 

Οι bitwise τελεστές δουλεύουν σε κάθε ένα από τα bits των (αριθμητικών τιμών) εισόδων τους ξεχωριστά. Οι αριθμητικές τιμές έχουν γενικά "πολλά" bits διαθέσιμα. Επομένως, αν έχεις λόγο να θέλεις να αναπαραστήσεις κάποιες τιμές ως μονά ή ομάδες από bits, μπορείς εύκολα να τις "πακετάρεις" όλες μαζί σε μια αριθμητική τιμή και να κάνεις κάποιες πράξεις πάνω σ' αυτές μαζικά, εύκολα και γρήγορα. Εκεί είναι που μπορεί να βοηθήσει.

 

Για παράδειγμα δες την έννοια του bitmask και του bitfield, που είναι αυτό που περιέγραψα παραπάνω.

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...