Δημοσιεύτηκε: 30 Αύγ 2011, 19:47
από migf1
migf1 έγραψε:
...
Όταν μιλάμε για unsigned μπορείς να το υπολογίσεις και μόνος σου, αφού το κάθε bit είναι ουσιαστικά μια δύναμη του 2, ξεκινώντας από την 0. Για παράδειγμα σε ένα byte, που έχει δλδ 8 bits, η μέγιστη τιμή που μπορεί να φιλοξενήσει υπολογίζεται ως εξής:
2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 + 2^7 (που ισούται με 255 ;) )
...

Κάτσε να στο εξηγήσω πιο καλά, το παραπάνω λοιπόν αν κάνεις τις πράξεις των δυνάμεων ισούται με:
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 (που όλο μαζί ισούται με 255)

Ο κάθε όρος από τους παραπάνω, αντιστοιχεί σε ένα bit... άρα όταν και τα 8 bit είναι "αναμμένα" αθροίζονται σε 255.
Αν αφήσεις αναμμένο μονάχα το 3ο bit ( 00100000) τότε η δεκαδική τιμή που αντιστοιχεί είναι η 4... ομοίως για να πάρεις την δεκαδική τιμή 9, ανάβεις το 1ο και το 4ο bit (10010000) που δίνει 1+8 = 9... και πάει λέγοντας.

Βέβαια οι παραπάνω δυαδικές μορφές είναι ανάποδα γραμμένες, σύμφωνα με το πως έχουμε συνηθίσει εμείς να γράφουμε. Τα παραπάνω πρέπει να διαβαστούν από δεξιά προς τα αριστερά ή απλά να τα αντιστρέψουμε, για να τα καταλάβουμε δηλαδή...
00000100 είναι το 4
00001001 είναι το 10
κλπ

Είναι όμως καλό παράδειγμα για τα low και high byte orders που έγραψα στο προηγούμενο post :)