operatore di spostamento a sinistra

S

shiv_emf

Guest
Hii guys ...Sono confuso con operatore di spostamento a sinistra ...

Supponiamo che ho lasciato uno spostamento NUMERO .. sarà il segno del numero cambia?
per esempio ...
Supponiamo, per variabile di tipo integer ...dimensione del intero è 4bytes THT è di 32 bit

Fallows sistema di rappresentazione in complemento a 2 ...se turno contro smalllest numero negativo ... quale sarà il risultato?

 
Hi shiv_emf ...

In C, se la variabile è firmato, il segnale sarà esteso, ma se variabile Thew non è firmato, il compilatore automatico di riempimento pari a zero.È questo il tuo dubbio?Spero sono stati utili

 
hey grazie per la risposta ur!

ma
int x;

Questa dichiarazione è firmata intero ...se i leftshift si è THT
100000000000000000000000000 (1 in MSB e 31 "zero")
wht sarà l'output?
è zero o lo stesso numero ..firmato bit shud nt essere cambiato

 
è meglio che tu forza zero inizializzazione.per esempio

int x = 0;

x = x <<31;

l'uscita è x = 0;

se
x = 1;
x = x <<31;
allora

x = 0x80000000;

Mi è stato chiaro?suo meglio per inizializzare la tua int.Se si utilizza unsigned int, la sua automatcally zero inizializzato.

 
un altro

In caso di numero negativo !!....sistema memorizza questi valori in complemento a 2

ora, se u leftshift ..... variabileFirmato saranno cambiamenti BIT??

Spero mi è chiaro ora

 
Shiv_emf Ciao, grazie per "aiutato".E 'stato un piacere.

Shift Ora, se la variabile, firmato, è negativo e sinistra, il segnale sarà kepted.È lo stesso sistema operativo thats istruzioni in asm che ruotano a sinistra mantenendo il segnale.Mi è stato chiaro?

 
È necessario fare attenzione su questo..

Sposta a destra sono l'attuazione dipendenti.Ciò significa che avete bisogno di cercare come il vostro compilatore considera firmato spostamento a destra, con valori negativi.Potrebbe essere un passaggio logico (si perde il bit di segno e diventa 0) o di spostamento aritmetico (bit di segno viene mantenuto).

Tutti i compilatori Microsoft uso turni aritmetica.

Il modo più semplice per raccontare è quella di scrivere un codice di prova e impostare un int a un valore negativo, è uno spostamento a destra e utilizzare il debugger a guardare il risultato.

 
nice one ...Thanks for help

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorriso" border="0" />e sto lavorando su RedHat Linux OS ...con GCC

così i hav a chk it out ..

 

Welcome to EDABoard.com

Sponsor

Back
Top