timekeeper Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Ας υποθέσουμε ότι έχουμε τον binary αριθμό 1111 1111 (dec = -1) . O αντίστοιχος hexademical θα ήταν ο FF? Υπάρχει τρόπος με μια ματιά να καταλαβαίνω αν ένας hex είναι αρνητικός ή θετικός (όπως με το πρώτο ψηφίο στους binary) ή πρέπει να το ψυλλιάζομαι από το magnitude του αριθμού (πχ ένας 8bit ακέραιος δεν μπορεί να είναι πάνω από 0111 1111 = 127 ενώ το FF = 255);
fromaz Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Τυπικά, δεν υπάρχουν αρνητικοί δυαδικοί / δεκαεξαδικοί. Ποιος σου είπε ότι ένας 8μπιτος ακέραιος δεν είναι ποτέ πάνω από 127; Είναι και παραείναι. Στη C, για παράδειγμα, δηλώνεται ως unsigned char, και λαμβάνει τιμές από 0-255. Στην Pascal δηλώνεται ως Byte, κοκ. Αυτό που περιγράφεις είναι θέμα ερμηνείας, λέγεται two's complement, και αφορά στο πιο διαδεδομένο σύστημα αριθμητικής διαχείρισης μιας ακολουθίας δυαδικών ψηφίων. Με άλλα λόγια, ισχύει κι εδώ το "ότι δηλώσεις είσαι...". Για να απαντήσω στο ερώτημά σου, το εάν ένας hex είναι "αρνητικός" φαίνεται από το high-order nibble: Εάν είναι >= 8 τότε είναι...
alkisg Δημοσ. 17 Οκτωβρίου 2008 Δημοσ. 17 Οκτωβρίου 2008 Πρώτο bit = 1 <=> πρώτο δεκαεξαδικό ψηφίο >= 8. Φυσικά ο αριθμός FFF δεν είναι αρνητικός, γιατί θα έπρεπε να γραφεί 0FFF => θετικός που πιάνει 2 bytes (τουλάχιστον). (edit: καλά κάτι παθαίνει είτε το φόρουμ είτε ο firefox μου, το post του fromaz δεν το είδα παρά μόνο αφού απάντησα...)
timekeeper Δημοσ. 17 Οκτωβρίου 2008 Μέλος Δημοσ. 17 Οκτωβρίου 2008 Τυπικά, δεν υπάρχουν αρνητικοί δυαδικοί / δεκαεξαδικοί. Ποιος σου είπε ότι ένας 8μπιτος ακέραιος δεν είναι ποτέ πάνω από 127; Είναι και παραείναι. Στη C, για παράδειγμα, δηλώνεται ως unsigned char, και λαμβάνει τιμές από 0-255. Στην Pascal δηλώνεται ως Byte, κοκ. Αυτό που περιγράφεις είναι θέμα ερμηνείας, λέγεται two's complement, και αφορά στο πιο διαδεδομένο σύστημα αριθμητικής διαχείρισης μιας ακολουθίας δυαδικών ψηφίων. Με άλλα λόγια, ισχύει κι εδώ το "ότι δηλώσεις είσαι...". Για να απαντήσω στο ερώτημά σου, το εάν ένας hex είναι "αρνητικός" φαίνεται από το high-order nibble: Εάν είναι >= 8 τότε είναι... Σε ευχαριστώ για την απάντηση. Διορθώνω: Εννοούσα ότι ένας signed 8bit ακέραιος δεν μπορεί να είναι πάνω από 127. Αν κατάλαβα καλά εννοείς ότι τα τέσσερα πρώτα bits αν είναι 1000 και πάνω. Σε ευχαριστώ. -----Προστέθηκε 17/10/2008 στις 04 : 53 : 34----- Πρώτο bit = 1 <=> πρώτο δεκαεξαδικό ψηφίο >= 8. Φυσικά ο αριθμός FFF δεν είναι αρνητικός, γιατί θα έπρεπε να γραφεί 0FFF => θετικός που πιάνει 2 bytes (τουλάχιστον). (edit: καλά κάτι παθαίνει είτε το φόρουμ είτε ο firefox μου, το post του fromaz δεν το είδα παρά μόνο αφού απάντησα...) Και εγώ το δικό σου τώρα το είδα. Ευχαριστώ.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.