taslikos Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Καλημέρα στο φόρουμ.. Θα ήθελα κάποιος να βοηθήσει στην κατασκευή κώδικα που θα μετατρέπει έναν αριθμο από δεκαδικο(αρνητικό) σε δυαδικό σύστημα. Το πρόβλημα μου είναι πως με την εντολή bin() ουσιαστικά τυπώνει τον σχετικό αριθμό στο δυαδικό με ένα μειων μπροστά που είναι εντελώς διαφορετικό από την μέθοδο της αντιστροφής που γνωρίζω. Έχω βρει πολλές λύσεις στο Ίντερνετ αλλά καμία τους δεν κατάλαβα πως λειτουργούν γιατί χρησιμοποιούν πολύπλοκες εντολές (είμαι νέος στην python). Επίσης θα ήθελα να μου πείτε πως μπορώ να κάνω να τυπώνει πχ το -3 ως 101 στο δυαδικό διότι με όλες τις λύσεις το έβγαζε ως 01 που έβρισκα στο διαδίκτυο. Δηλαδή να έχω τον ελάχιστο δυνατό αριθμό ψηφίων στο δυαδικό. Τέλος υπάρχει άλλη μέθοδος για την μετατροπή εκτός την αντίστροφη ψηφίων;; Ευχαριστώ!
Sheogorath Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Δεν έχω δουλέψει πολύ με python, αλλά αν το θεωρείς ως string και βάζεις τον άσσο μπροστά? Απο unsigned να το κάνεις signed δηλαδή. 1
taslikos Δημοσ. 31 Οκτωβρίου 2016 Μέλος Δημοσ. 31 Οκτωβρίου 2016 Το προσπάθησα αυτό να βάλω τον άσσο μπροστά αλλά δεν κατάφερα... γνωρίζω πολλές εντολές αλλά τις εντελώς βασικές τους χρήσεις ακόμη.. αν μπορούσες να βοηθήσεις γι το πως βάζω τον άσσο μπροστά θα σου ήμουν ευγνώμων. Και εκτός από αυτό το πρόβλημα έχω κολλήσει στο πιο βασικό την μετατροπή αρνητικού..
Sheogorath Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Δεν έχω δουλέψει python, στο stackoverflow δεν είδες κάτι? Απλά σαν λογική σε άλλες γλώσσες έτσι γίνεται.
taslikos Δημοσ. 31 Οκτωβρίου 2016 Μέλος Δημοσ. 31 Οκτωβρίου 2016 Δεν έχω δουλέψει python, στο stackoverflow δεν είδες κάτι? Απλά σαν λογική σε άλλες γλώσσες έτσι γίνεται. Εκεί έχω βρει πολλά αλλά κανένα δεν έκανε την δουλειά που ήθελα πχ ένα με τα στρινγκ απλά αντικαθιστούσε σε υπάρχων δεν πρόσθετε στο μπροστά μέρος που θέλω.. προσπάθησα να προχωρήσω με το σκεπτικό που είχε εκείνος αλλά δεν πέτυχε ούτε αυτό.Κάπως έτσι πιστεύω θα λυθεί το θέμα: text = 'abcdefg' text = text[:1] + 'Z' + text[2:] Αλλά δεν καταλαβαίνω την δεύτερη εντολή. Οι αριθμοί 1,2 σε τι αντιστοιχούν;; πως θα επιλέξω την θέση που θα αλλάξω το γράμμα του "text" με το γράμμα z? Edit: από ότι κατάλαβα το 1 είναι η θέση του γράμματος στο στρινγκ δηλαδή το 2ο γράμμα μιας και ξεκινώ από το 0 και το 2 είναι του τελευταίου γράμματος που επιλέγω δηλ το 3ο Το z όμως ποιο έρχεται να αντικαταστήσει;; το 2ο η το 3ο;
defacer Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Το πρόβλημα μου είναι πως με την εντολή bin() ουσιαστικά τυπώνει τον σχετικό αριθμό στο δυαδικό με ένα μειων μπροστά που είναι εντελώς διαφορετικό από την μέθοδο της αντιστροφής που γνωρίζω. Ποια είναι η μέθοδος αντιστροφής που γνωρίζεις; Δεν αναφέρεις τίποτα σχετικό οπότε ίσως δε γνωρίζεις σχετικά, αλλά δεν είναι αρκετό να πεις "δυαδικό". Ποια αναπαράσταση; One's complement or two's complement?
pmav99 Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Αυτά τα 1 και 2 ονομάζονται slices. Google it.
taslikos Δημοσ. 31 Οκτωβρίου 2016 Μέλος Δημοσ. 31 Οκτωβρίου 2016 Ποια είναι η μέθοδος αντιστροφής που γνωρίζεις; Δεν αναφέρεις τίποτα σχετικό οπότε ίσως δε γνωρίζεις σχετικά, αλλά δεν είναι αρκετό να πεις "δυαδικό". Ποια αναπαράσταση; One's complement or two's complement? Η μέθοδος που γνωρίζω είναι αν πχ θέλω στο δυαδικό τον αριθμό -α βρίσκω την απεικόνιση στο δυαδικό της απόλυτης τιμής του δηλαδή του α και είναι πχ της μορφής 0110 Τότε από τα δεξιά προς τα αριστερά κρατώ ίδια τα νούμερα έως το πρώτο άσσο που συναντώ και αντιστρέψω τα αλλά. Δηλ το -α θα είναι 1010.
defacer Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Η μέθοδος που γνωρίζω είναι αν πχ θέλω στο δυαδικό τον αριθμό -α βρίσκω την απεικόνιση στο δυαδικό της απόλυτης τιμής του δηλαδή του α και είναι πχ της μορφής 0110 Τότε από τα δεξιά προς τα αριστερά κρατώ ίδια τα νούμερα έως το πρώτο άσσο που συναντώ και αντιστρέψω τα αλλά. Δηλ το -α θα είναι 1010. Δεν την ξέρω αυτή τη μέθοδο (ή αν κάποτε την είδα, δεν τη θυμάμαι) και ούτε καταλαβαίνω με ποιά λογική αυτό είναι αναπαράσταση αρνητικού. Σίγουρα δεν είναι ούτε one's ούτε two's complement, οπότε "η επιστήμη σηκώνει τα χέρια ψηλά". Εκτός από τη μπακάλικη μέθοδο ξέρεις τίποτα περισσότερο επί του θέματος; Με ποιά λογική υποτίθεται ότι αυτό είναι αναπαράσταση ή κάτι άλλο; Γενικά η αναπαράσταση (που δεν είναι καν μία) δεν είναι έτσι επειδή είναι γραμμένο σε πέτρινες πλάκες, πρέπει να έχει κάποια μαθηματική λογική. Αυτό που λες δε βλέπω ποιά λογική έχει.
taslikos Δημοσ. 31 Οκτωβρίου 2016 Μέλος Δημοσ. 31 Οκτωβρίου 2016 Δεν την ξέρω αυτή τη μέθοδο (ή αν κάποτε την είδα, δεν τη θυμάμαι) και ούτε καταλαβαίνω με ποιά λογική αυτό είναι αναπαράσταση αρνητικού. Σίγουρα δεν είναι ούτε one's ούτε two's complement, οπότε "η επιστήμη σηκώνει τα χέρια ψηλά". Εκτός από τη μπακάλικη μέθοδο ξέρεις τίποτα περισσότερο επί του θέματος; Με ποιά λογική υποτίθεται ότι αυτό είναι αναπαράσταση ή κάτι άλλο; Γενικά η αναπαράσταση (που δεν είναι καν μία) δεν είναι έτσι επειδή είναι γραμμένο σε πέτρινες πλάκες, πρέπει να έχει κάποια μαθηματική λογική. Αυτό που λες δε βλέπω ποιά λογική έχει. Μπορείς να μου πεις τον δικό σου τρόπο μετατροπής; διότι όσο και να έψαξα δεν βρήκα άλλον τρόπο εκτός από την αντίστροφη.
tsofras Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Αν και εγώ δεν ξέρω python με ένα search βρήκα αυτό : http://stackoverflow.com/questions/21871829/twos-complement-of-numbers-in-python Δές αν σου κάνει 1
Sheogorath Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Ποια είναι η μέθοδος αντιστροφής που γνωρίζεις; Δεν αναφέρεις τίποτα σχετικό οπότε ίσως δε γνωρίζεις σχετικά, αλλά δεν είναι αρκετό να πεις "δυαδικό". Ποια αναπαράσταση; One's complement or two's complement? Μάλλον σαν συμπλήρωμα ως προς δύο το ξέρει, αλλά μπέρδεψε το αριστερά προς τα δεξιά? 2
taslikos Δημοσ. 31 Οκτωβρίου 2016 Μέλος Δημοσ. 31 Οκτωβρίου 2016 Μάλλον σαν συμπλήρωμα ως προς δύο το ξέρει, αλλά μπέρδεψε το αριστερά προς τα δεξιά? Ναι συμπλήρωμα ως προς δυο λέγεται ο τρόπος, εγώ από δεξιά προς αριστερά το ξέρω.. Τελικά γνωρίζει κανείς κάποιον τρόπο εκτός του συμπληρώματος;; Αν και εγώ δεν ξέρω python με ένα search βρήκα αυτό : http://stackoverflow.com/questions/21871829/twos-complement-of-numbers-in-python Δές αν σου κάνει Θα το ψάξω και θα σας πω.
Sheogorath Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Ναι συμπλήρωμα ως προς δυο λέγεται ο τρόπος, εγώ από δεξιά προς αριστερά το ξέρω.. Τελικά γνωρίζει κανείς κάποιον τρόπο εκτός του συμπληρώματος;; Θα το ψάξω και θα σας πω. Ναι, my bad, έτσι είναι.
defacer Δημοσ. 31 Οκτωβρίου 2016 Δημοσ. 31 Οκτωβρίου 2016 Μπορείς να μου πεις τον δικό σου τρόπο μετατροπής; διότι όσο και να έψαξα δεν βρήκα άλλον τρόπο εκτός από την αντίστροφη. Τελικά σωστά το είχες το αποτέλεσμα, απλά εγώ brainfart διαβάζοντας την περιγραφή και νόμιζα πως ήταν λάθος. Λοιπόν για two's complement υπάρχουν διάφοροι τρόποι να φτάσεις στο αποτέλεσμα, π.χ. είσοδος = 6 (110). 1. Παίρνεις το one's complement (αντιστρέφεις τα πάντα) και μετά προσθέτεις 1. 0110 => 1001 => 1010. Το επιπλέον 0 μπροστά από το αρχικό 110 είναι σημαντικό, αντιπροσωπεύει το πρόσημο + που μετά γίνεται -. 2. Αφαιρείς την είσοδο από την αμέσως επόμενη μεγαλύτερη δύναμη του 2 ανάλογα με το πόσα bits θέλεις. 110 => 10000 - 110 => 1010. 10000 επειδή χρειαζόμαστε 4 bits για το -6 άρα η μεγαλύτερη δύναμη του 2 είναι 2^5. Αυτό που λες εσύ, αν το πάρεις από αριστερά προς τα δεξιά, είναι στην ουσία μπακαλιά για να κάνεις το πρώτο που λέω παραπάνω. Οι μπακαλιές καλές για να βγάζεις αποτέλεσμα, αλλά άμα δεν ξέρεις γιατί τις κάνεις έχεις θέματα. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα