oriok Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Θα ήθελα να μου εξηγήσει κάποιος το εξής.Αν έχουμε έναν ακέραιο αριθμό, πόσα bit χρειαζόμαστε για να τον αναπαραστήσουμε? Σε ένα βιβλίο είδα ότι χρειαζόμαστε logn ή nlogn ψηφία (δεν θυμάμαι ακριβώς) , αλλά δεν μπορώ να καtαλάβω από που βγαίνει αυτό το συμπέρασμα.
timekeeper Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Θα ήθελα να μου εξηγήσει κάποιος το εξής.Αν έχουμε έναν ακέραιο αριθμό, πόσα bit χρειαζόμαστε για να τον αναπαραστήσουμε? Σε ένα βιβλίο είδα ότι χρειαζόμαστε logn ή nlogn ψηφία (δεν θυμάμαι ακριβώς) , αλλά δεν μπορώ να καtαλάβω από που βγαίνει αυτό το συμπέρασμα. Ρίξε μια ματιά εδώ: http://users.teicrete.gr/taxd/02/notes/arithmetics/01.bits%20and%20bytes.htm
I_dont_need_PC Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Integer (Ακέραιος) = 4 Bytes = 32 Bits
oriok Δημοσ. 17 Οκτωβρίου 2008 Μέλος Δημοσ. 17 Οκτωβρίου 2008 @I_dont_need_PC δεν εννοώ αυτό που λες.Εγώ λέω π.χ. έχουμε τον ακέραιο 9 , ο οποίος σε δυαδικό είναι 1001 , δηλαδή 4 bit.Εγώ δεν καταλαβαίνω πως μπορούμε να βγάλουμε το 4 σε σχέση με καποιο λογαριθμο π.χ. log(kati) και να μας βγεί το 4. @timekeeper αυτό που μου έδειξες δεν κάνει κάποια τέτοια ανάλυση με log, αλλά θα το κοιτάξω μήπως με βοηθήσει να το βγάλω μόνος μου
timekeeper Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 @I_dont_need_PC δεν εννοώ αυτό που λες.Εγώ λέω π.χ. έχουμε τον ακέραιο 9 , ο οποίος σε δυαδικό είναι 1001 , δηλαδή 4 bit.Εγώ δεν καταλαβαίνω πως μπορούμε να βγάλουμε το 4 σε σχέση με καποιο λογαριθμο π.χ. log(kati) και να μας βγεί το 4. @timekeeper αυτό που μου έδειξες δεν κάνει κάποια τέτοια ανάλυση με log, αλλά θα το κοιτάξω μήπως με βοηθήσει να το βγάλω μόνος μου 4 είναι ο log16 με βάση το 2. Δηλαδή για να πάρεις το 16 πρέπει να υψώσεις την βάση 2 στην 4. 2^4=16. Ένας unsigned δυαδικός ακέραιος μπορεί να πάρει maχimum τιμή την 2^ν όπου ν ο αριθμός των ψηφίων του. Μέγιστη - ελάχιστη τιμή (unsigned - μη προσημασμένοι) Η μέγιστη τιμή που μπορεί να αντιστοιχηθεί σε ένα byte, προφανώς ισούται με: 11111111 ή, σε δεκαδική τιμή: 1 x 2^7 + 1 x 2^6 + 1 x 2^5 + 1 x 2^4 + 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = = 255 Γενικά, προκειμένου να βρούμε τη μέγιστη τιμή που μπορεί να λάβει ένα πλήθος n-bit, αντί να αθροίζουμε κάθε φορά όλες αυτές τις δυνάμεις του δύο, υπάρχει ένας απλούστερος τρόπος: max τιμή πλήθους n-bit = 2^n - 1 Στο παραπάνω παράδειγμα (πλήθος 8-bit) ισχύει λοιπόν: max τιμή πλήθους 8-bit = 2^8 - 1 = 256 -1 = 255 Αντίστοιχα η ελάχιστη τιμή ισούται με: 00000000, δηλαδή 0. Οι παραπάνω δύο περιπτώσεις αφορούν μη προσημασμένα (unsigned) bytes. Στην περίπτωση όμως που θέλουμε οι τιμές ενός byte να φέρουν και πρόσημο (signed), ακολουθείται μία διαφορετική κωδικοποίηση.
I_dont_need_PC Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Θα ήθελα να μου εξηγήσει κάποιος το εξής.Αν έχουμε έναν ακέραιο αριθμό, πόσα bit χρειαζόμαστε για να τον αναπαραστήσουμε? Σε ένα βιβλίο είδα ότι χρειαζόμαστε logn ή nlogn ψηφία (δεν θυμάμαι ακριβώς) , αλλά δεν μπορώ να καtαλάβω από που βγαίνει αυτό το συμπέρασμα. Σε αυτο που ρωτησες ισχυει αυτο που σου ειπα ( Integer (Ακέραιος) = 4 Bytes = 32 Bits) @I_dont_need_PC Εγώ δεν καταλαβαίνω πως μπορούμε να βγάλουμε το 4 σε σχέση με καποιο λογαριθμο π.χ. log(kati) και να μας βγεί το 4. 4 = log(10^4) = log 10000 και γενικα : Ν = log(10^N) όπου Ν ακεραιος και πιο γενικα : N = logk(k^N) όπου logk λογαριθμος με βαση το k και Κ^Ν : κ εις την Ν δυναμη
drm Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Προγραμματιστικά, οι περισσότερες γλώσες σήμερα χρησιμοποιούν 4 bytes για να αναπαραστήσουν έναν ακέραιο αυτό σημαίνει ότι μπορούν να αναπαραστήσουν 2^(8*4) διαφορετικές τιμές. (Δηλ από -(2^(8*4))/2 έως +(2^(8*4))/2 - 1) Με ένα bit μπορείς να αναπαραστήσεις 2 τιμές (0, 1) με 2 bit μπορείς να αναπαραστήσεις 4 τιμες (00, 01, 10, 11) κ.ο.κ. Στην γενική μορφή με k bits μπορείς να αναπαραστήσεις 2^κ διαφορετικές τιμές... Τώρα από τα μαθηματικά ίσως θυμάσε ότι εάν 2^κ = ν τότε Log2(N) = k; [Και πιο γενικά Α^Β=Γ <=> Β = LogΑ(Γ)] δηλάδή ο λογάριθμος είναι κάτι σαν το αντίθετο της ύψωσεις σε δύναμη έτσι λοιπόν εάν θές να αναπαραστήσεις ένα συγκεκριμένο πλήθος διαφορετικών καταστάσεων (πχ ακέραιοι αριθμοί), όταν οι καταστάσεις σου είναι Ν, τότε θες (τουλάχιστον) log2(N) bit... [Edit]: Aesmade thanx για την υπόδειξη, το διώρθωσα...
Aesmade Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 (Δηλ από -(2^(8*4))/2 έως +(2^(8*4))/2) Για την ακρίβεια εως +((2^(8*4))/2)-1), αφού είναι και το 0.
Evgenios1 Δημοσ. 18 Οκτωβρίου 2008 Δημοσ. 18 Οκτωβρίου 2008 Δε μου λετε καλα με τα int long char __int8 __int16 __int32 bool (ή boolean) και τα unsing τους, με το string (ή ansiString) πως δουλεβει(?) ενοω οτι, τα παραπανω δεσμεβουν μια σιγκεκριμενη θεση(και bit) στη μνημη, το string πως δουλεβει?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.