Operació bit a bit: diferència entre les revisions

Contingut suprimit Contingut afegit
m Corregit: -està en què +està en el fet que
m Corregit: i el aritmètic cap > i l'aritmètic cap
Línia 114:
Els desplaçaments aritmètics són similars als desplaçaments lògics, només que els aritmètics estan pensats per treballar sobre nombres enters amb signe en representació de [[complement a dos]] en lloc d'enters sense signe. Els desplaçaments aritmètics permeten la multiplicació i la divisió per dos, de nombres enters amb signe, per una potència de dos. Desplaçar n bits cap a l'esquerra o a la dreta equival a multiplicar o dividir per 2 <sup> n </sup>, (assumint que el valor no fa [[Desbordament aritmètic | desbordament]] (overflow o underflow)).
 
El desplaçament aritmètic a l'esquerra és exactament igual al desplaçament lògic cap a l'esquerra. De fet són dos noms diferents per exactament la mateixa operació. En desplaçar els bits una posició cap a l'esquerra és equivalent a una multiplicació per 2 independentment de si és un nombre enter amb signe o sense signe. En els processadors x86, el [[assemblador]] té dos pnemònics per al desplaçament lògic i el l'aritmètic cap a l'esquerra, però quan el programa és ensamblat, només hi ha un opcode per tots dos a les instrucció en [[llenguatge de màquina]].
 
El desplaçament aritmètic cap a la dreta és diferent al desplaçament lògic cap a la dreta. En els sencers sense signe, per dividir per 2, s'ha d'usar el desplaçament lògic, el qual sempre afegeix un 0 a l'extrem esquerre per cada desplaçament d'un bit a la dreta. En canvi, en els enters amb signe, s'ha d'usar el desplaçament aritmètic cap a la dreta, el qual copia el bit del signe (el [[bit més significatiu]] (MSB)) en l'espai buit que queda a l'extrem esquerre cada vegada que es fa un desplaçament d'un bit a la dreta. D'aquesta manera, es divideix efectivament per 2 a l'enter amb signe.