χειριστή στροφή ΑΡΙΣΤΕΡΑ

S

shiv_emf

Guest
HII guys ...Είμαι συγχέεται με το αριστερό φορέα στροφή ...

υποθέσουμε i αριστερά μετατόπιση ενός ΑΡΙΘΜΟΣ .. θα την υπογράψουν αριθμό των αλλαγών;;
για παράδειγμα ...
ας υποθέσουμε ότι για το ακέραιος μεταβλητή τύπου ...μέγεθος του ακεραίου είναι 4bytes tht είναι 32 bits

αγραναπαύσεις σύστημα 2 του συμπληρώνουν αντιπροσώπευση ...εάν κατά βάρδιες smalllest αρνητικός αριθμός ... ποιο θα είναι το αποτέλεσμα;;

 
Hi shiv_emf ...

Σε C, αν σας είναι μεταβλητή υπογραφεί, το σήμα θα πρέπει να παραταθεί, αλλά αν μεταβλητή thew είναι ανυπόγραφο, ο compiler αυτόματη πλήρωση μηδέν.Είναι αυτή η αμφιβολία σας;Ελπίζω να ήταν χρήσιμες

 
hey thanks for ur reply!!

αλλά
int x?

αυτή η δήλωση υπογράφεται ακέραιος ...εάν την leftshift tht είναι
100000000000000000000000000 (1 σε msb και 31 "μηδέν")
WHT θα είναι το αποτέλεσμα;;
είναι μηδέν ή ίδιο αριθμό με ..υπογράφηκε λίγο shud nt να αλλάξει

 
είναι καλύτερα να ισχύει μηδέν αρχικοποίηση.π.χ.

int x = 0?

x = x <<31?

η έξοδος είναι x = 0?

αν
x = 1?
x = x <<31?
μετά

x = 0x80000000?

i ήταν σαφής;καλύτερα να προετοιμαστεί int σας.αν χρησιμοποιείτε unsigned int, του automatcally μηδέν ξεκινά.

 
άλλο

σε περίπτωση αρνητικού αριθμού !!....σύστημα αποθηκεύει αυτές τις αξίες στις 2 του συμπληρώματος

Τώρα εάν u leftshift μεταβλητή .....Υπεγράφη θα BIT αλλαγές;;;

Ελπίζω να είμαι σαφής τώρα

 
Γεια shiv_emf, ευχαριστώ για την "Βοήθησε".Ήταν μια χαρά.

Τώρα, αν σας μεταβλητή, που υπεγράφη, είναι αρνητική και αριστερή στροφή, το σήμα θα είναι kepted.Είναι το ίδιο thats os οδηγίες στο asm που περιστρέφονται αριστερά διατήρηση του σήματος.I ήταν σαφής;

 
Θα πρέπει να είμαστε προσεκτικοί σε αυτό..

Δεξιά στροφή είναι που εξαρτώνται από την εφαρμογή.Αυτό σημαίνει ότι θα πρέπει να εξετάσουμε το πώς η μεταγλωττιστή σας αντιμετωπίζει υπέγραψε δεξιά στροφή με αρνητικές τιμές.Θα μπορούσε να είναι είτε μια λογική στροφή (χάνετε το λίγο υπογράψει και να καταστεί 0) ή μετατόπιση αριθμητικό (λίγο σήμα διατηρείται).

Όλες compilers της Microsoft χρησιμοποιούν βάρδιες αριθμητική.

Ο ευκολότερος τρόπος να πω είναι να γράψει μερικά κώδικα δοκιμής και να δώσει το int σε αρνητική τιμή, στροφή δεξιά προς το ένα και να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων για να δούμε το αποτέλεσμα.

 
nice one ...ευχαριστώ για τη βοήθεια

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Χαμόγελο" border="0" />καλά είμαι εργασίας για RedHat Linux OS ...χρησιμοποιώντας GCC

έτσι hav να chk έξω ..

 

Welcome to EDABoard.com

Sponsor

Back
Top