sorceress Δημοσ. 6 Φεβρουαρίου 2006 Δημοσ. 6 Φεβρουαρίου 2006 hi... mhpws kserete ti tha mporouse na shmainei mia parastash ths morfhs: i>>=1; se epanalhpsh for sth glwssa C? thanks a lot!
Moderators Praetorian Δημοσ. 6 Φεβρουαρίου 2006 Moderators Δημοσ. 6 Φεβρουαρίου 2006 An kai de to exw xrhsimopoihsei pote (h toulaxisto oxi gia kapoia xronia), auto pou kanei to parapanw einai idio me to: i = i >> 1; dhladh shift kata 1 8esh pros ta deksia ths binary (dyadikhs) anaparastashs tou i. O ari8mos sta deksia prepei na einai panta 8etikos akeraios. to parapanw isodynamei me diaresh tou i me to 2 (pio swsta to 2^1)
boutsak Δημοσ. 6 Φεβρουαρίου 2006 Δημοσ. 6 Φεβρουαρίου 2006 Βασικά αυτό που κάνει αυτός ο τελεστής ( >> ) είναι ότι κάνει shift δεξιά τα ψηφία του αριστερού μέλους τόσα όσα δείχνει το δεξί μέλος. Δηλαδή, έστω ότι παραπάνω έχεις int i = 8 (στο δυαδικό είναι 1000). Παρακάτω έχεις i>>1, επομένως κάνεις shift τα ψηφεία του i κατά 1, δηλαδή το τελικό αποτέλεσμα στο δυαδικό είναι 100, δηλαδή 4. Αν είχες i>>2, το αποτέλεσμα θα ήταν 10, δηλαδή το 2 και πάει λέγοντας. Επλίζω να έγινα κατανοητός
godlike Δημοσ. 6 Φεβρουαρίου 2006 Δημοσ. 6 Φεβρουαρίου 2006 Ετσι είναι. Στην υπογραφή μου για παράδειγμα κάνω το 333 shift left κατά 1 και γίνεται 666 :twisted:
sorceress Δημοσ. 7 Φεβρουαρίου 2006 Μέλος Δημοσ. 7 Φεβρουαρίου 2006 Ευχαριστώ πολύ, κατάλαβα. Και κάτι ακόμα. Μήπως ξέρετε γιατί τα: x%3; και (x+x/3)&3 είναι ισοδύναμα?
Sta Δημοσ. 15 Φεβρουαρίου 2006 Δημοσ. 15 Φεβρουαρίου 2006 Για όλους τους ακεραίους x είναι: x = 3*π + υ, π το πηλίκο της ακέραιας διαίρεσης x:3, υ=0,1,2 το υπόλοιπο. Είναι: x%3=υ x + x/3 = x + π = 3*π + υ + π = 4*π + υ. Από τον τελευταίο ακέραιο, για να υπολογίσουμε το: (x+x/3)&3, κρατάμε τα 3 λιγότερο σημαντικά bits (αυτό κάνει η πράξη &3). Όμως, το 4*π έχει τα 2 LSBits ίσα με το 0 (ως πολλαπλάσιο του 4), ενώ το υ (0,1 ή 2) έχει όλη του την αξία σε αυτά τα bits (τα υπόλοιπα είναι πάντα 0). Οπότε, (x+x/3)&3 = (4*π+υ)&3 = υ = x%3.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.