Desplaçament lògic

funcionament de l'ordinador a nivell de bits

En informàtica, un desplaçament lògic és una operació per bits que desplaça tots els bits del seu operand. Les dues variants base són el desplaçament lògic a l'esquerra i el desplaçament lògic a la dreta. Això es modula encara més pel nombre de posicions de bits que s'ha de desplaçar un valor donat, com ara el desplaçament a l'esquerra en 1 o el desplaçament a la dreta en n. A diferència d'un desplaçament aritmètic, un desplaçament lògic no conserva el bit de signe d'un nombre ni distingeix l'exponent d'un nombre del seu significat (mantissa); cada bit de l'operand es mou simplement un nombre donat de posicions de bits, i les posicions de bits vacants s'omplen, generalment amb zeros, i possiblement amb uns (contrast amb un desplaçament circular).[1]

Sovint s'utilitza un desplaçament lògic quan el seu operand es tracta com una seqüència de bits en lloc de com un nombre.

Operadors de desplaçament lògic en diversos llenguatges de programació i processadors:

Llenguatge o processadorEsquerraDret
AdaShift_LeftShift_Right
Batch,[2] C, C++, Go, Swift (només tipus sense signar);

Standard ML, Verilog, PHP, Python,[3] Rust [4] (només tipus sense signar [5])

<<>>
D, Java, JavaScript, Julia<<>>>
F# (només tipus sense signar)<<<>>>
FortranLSHIFTRSHIFT
OCamllsllsr
Objecte Pascal, Delphi, x86 assembly, Kotlin, Powershellshlshr
Llenguatge de descripció de maquinari VHSIC (VHDL), MIPSsllsrl
PowerPCslwsrw

Els desplaçaments lògics poden ser útils com a maneres eficients de realitzar la multiplicació o la divisió de nombres enters sense signe per potències de dos. El desplaçament cap a l'esquerra de n bits en un nombre binari amb signe o sense signe té l'efecte de multiplicar-lo per 2n. El desplaçament cap a la dreta de n bits en un nombre binari sense signe té l'efecte de dividir-lo per 2n (arrodoniment cap a 0).

El desplaçament lògic a la dreta és diferent del desplaçament aritmètic a la dreta. Així, molts idiomes tenen operadors diferents per a ells. Per exemple, a Java i JavaScript, l'operador lògic de desplaçament a la dreta és >>>, però l'operador aritmètic de desplaçament a la dreta és >>. (Java només té un operador de desplaçament esquerre (<<), perquè el desplaçament a l'esquerra mitjançant la lògica i l'aritmètica tenen el mateix efecte.)

Exemple

Si la seqüència de bits 0001 0111 (decimal 23) es desplaça lògicament en una posició de bit, aleshores:

El canvi cap a l'esquerra produeix: 0010 1110 (decimal 46)
Desplaçament lògic a l'esquerra un bit
El canvi cap a la dreta produeix: 0000 1011 (decimal 11)
Desplaçament lògic a la dreta un bit

Nota: MSB = Bit més significatiu, LSB = Bit menys significatiu

Referències

🔥 Top keywords: PortadaEspecial:CercaJuraj CintulaPeretViquipèdia:ContacteManuel de Pedrolo i MolinaNova CaledòniaEspecial:Canvis recentsRobert FicoJessica Goicoechea JoverCarles Puigdemont i CasamajóEslovàquiaXavlegbmaofffassssitimiwoamndutroabcwapwaeiippohfffXOriol Junqueras i ViesMauricio WiesenthalEleccions al Parlament de Catalunya de 2024Cas Asunta BasterraClara Ponsatí i ObiolsJoan Salvat-PapasseitAntoni Comín i OliveresLluís Puig i GordiEsquerra Republicana de CatalunyaValtònycAamer AnwarBorratjaTor (Alins)Fermín López MarínLaia Flores i CostaSegona Guerra MundialLaura Borràs i CastanyerProvíncies de CatalunyaSílvia Orriols SerraJosep Costa i RossellóPresident de la Generalitat de CatalunyaParlament de CatalunyaAurora Madaula i GiménezHistòria del cristianismeComarques de CatalunyaRamón Cotarelo García