Evgenios1 Δημοσ. 8 Οκτωβρίου 2008 Δημοσ. 8 Οκτωβρίου 2008 Γεια χαρα δαν. Θελω να δημιουργησω ενα τυπο ο οποιος θα δεσμεβει 4 bit , δλδ 16 διαφορετικες τημες (0χ0,0χ1....0χF). <<Το ξερω πος υπαρχει το float>> "lang. cpp ή csharp"
drm Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 δεν μπορείς να δεσμεύσεις λιγότερο από 1 byte... Εαν μας πεις καλύτερα τι θες να κάνεις, μπορεί να πέσει καμια ιδέα...
Dr.Fuzzy Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 Γεια χαρα δαν.Θελω να δημιουργησω ενα τυπο ο οποιος θα δεσμεβει 4 bit , δλδ 16 διαφορετικες τημες (0χ0,0χ1....0χF). <<Το ξερω πος υπαρχει το float>> "lang. cpp ή csharp" Ουτε εγω ειμαι της Φιλοσοφικης...αλλα κανε ομως κατι με την ορθογραφια, γιατι μας εχεις βγαλει τα ματια! Spell check it first!
georgemarios Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 στοχος σου ειναι να μπορει ο τυπος σου να παιρνει ΜΟΝΟ 16 τιμες? Ή να δεσμευει λιγοτερη μνημη? Καταρχην, αυτο που λεει ο drm ισχυει, το byte ειναι ο μινιμουμ χωρος μνημης που μπορει να δεσμευτει. Απο κει και περα μπορεις να πετυχεις διαφορα πραγματα κανοντας μαϊμουδιες με shifting, masking κτλ ωστε να αποθηκευσεις περισσοτερες απο μια τιμες σε ενα byte. Αυτα, τα υπολοιπα οταν μας εξηγησεις τι θες να πετυχεις....
Evgenios1 Δημοσ. 9 Οκτωβρίου 2008 Μέλος Δημοσ. 9 Οκτωβρίου 2008 στοχος σου ειναι να μπορει ο τυπος σου να παιρνει ΜΟΝΟ 16 τιμες? Ή να δεσμευει λιγοτερη μνημη? Καταρχην, αυτο που λεει ο drm ισχυει, το byte ειναι ο μινιμουμ χωρος μνημης που μπορει να δεσμευτει. Απο κει και περα μπορεις να πετυχεις διαφορα πραγματα κανοντας μαϊμουδιες με shifting, masking κτλ ωστε να αποθηκευσεις περισσοτερες απο μια τιμες σε ενα byte. Αυτα, τα υπολοιπα οταν μας εξηγησεις τι θες να πετυχεις.... Το δευτερο ηθελα (το πρωτο το κανεις και με ενα enum), τελος παντων' Απλα πιραματιζομε.Δλδ ενας χ86 επεξεργαστης κανει πραξεις (λογικες και μη) με βαση το 1 byte ? Και τοτε τι μας λενε 32μπιτος και 64μπιτος?(ταχω χαμενα) Και οι εντολες που εχει ο επεξεργαστης ως τι ειναι, 8bit,16bit,32bit ή 64bit?
anpapa Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 Μια εντολη σε χ86 κανει πραξεις αναμεσα σε θεσεις μνημης η και με σταθερες τιμες. Πιο συγκεκριμενα σε εναν 32bit επεξεργαστη καθε εντολη εχει μηκος 32bits σε εναν 64bit εχει 64 κλπ. Απο αυτα καποια bit κανουν τον επεξεργαστη να καταλαβει για ποια εντολη μιλαμε και καποια αλλα αναφερονται σε διευθυνσεις μνημης. Στα λεω αρκετα γενικα και ελπιζω να ειναι κατανοητα. Οσο για αυτο που ζητας στην C μπορεις να δηλωσεις μια μεταβλητη που να περνει τοσες διαφορετικες τιμες οσο πχ. 2 bit δηλαδη 4 διαφορετικες τιμες. Για το πως συντασετε δεν μπορω να σε βοηθησω.(δες εδω: http://www.daniweb.com/forums/thread78578.html).
StavrosD Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 Θα χρησιμοποιήσεις μια μεταβλητή τύπου BYTE, από την οποία θα χρησιμοποιήσεις μόνο όσα bit χρειάζεσαι. Εδώ ένα παράδειγμα με μεταβλητή τύπου long (σε εσένα αρκεί η BYTE που έχει 8 bit). http://www.java2s.com/Code/CSharp/Language-Basics/BitwiseOperators2.htm
dark_banishing Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 Μπορείς να δηλώσεις bit fields μέσα σε struct (c και c++). Π.χ struct { unsigned int test: 1; unsigned int : 0; unsigned int : 1; } class; Μπορείς να έχεις named και unnamed πεδία όπως βλέπεις. Τα unnamed βολεύουν για padding. Με τα zero-fields μπορείς να κάνεις alignment (αν το χρειαζεσαι).. Δε μπορείς να χρησιμοποιείς array με bit-fields ούτε τις διευθύνσεις τους (με τον τελεστή &). Για αυτο το λόγο η c είναι πολύ βολική για περιπτώσεις embedded software.
Evgenios1 Δημοσ. 9 Οκτωβρίου 2008 Μέλος Δημοσ. 9 Οκτωβρίου 2008 Μπορείς να δηλώσεις bit fields μέσα σε struct (c και c++). > Π.χ struct { unsigned int test: 1; unsigned int : 0; unsigned int : 1; } class; Τι ειναι : (σοζ και ολας αλλα ως χομπι ασχολουμε) , το test δεν ειναι int?δλδ 32bit
dark_banishing Δημοσ. 9 Οκτωβρίου 2008 Δημοσ. 9 Οκτωβρίου 2008 int lala : 1; // ο lala είναι 1 bit int test :10; // o test είναι 10 bit Φαντάζομαι κατάλαβες τώρα..
Evgenios1 Δημοσ. 9 Οκτωβρίου 2008 Μέλος Δημοσ. 9 Οκτωβρίου 2008 int lala : 1; // ο lala είναι 1 bit int test :10; // o test είναι 10 bit Φαντάζομαι κατάλαβες τώρα.. mmmm δλδ __int8 <=> int : 8 , o καλη φαση
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.