Lógica binária: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Legobot (discussão | contribs)
m A migrar 16 interwikis, agora providenciados por Wikidata em d:q879126
Linha 62:
 
== ''Shift'' ==
O '''deslocamento de bits''' é uma operação elementar de [[lógica binária]] que consiste na rotação de um conjunto de [[bit]]s (como um [[byte]] ou [[word]], por exemplo). Devido às características do [[sistema binário]], existe correspondência directa com as seguintes operações [[matemática]]s:
O operador unário de ''[[bit]] shifting'', ou '''deslocamento bit-a-bit''', equivale à multiplicação ou divisão por 2 do operando que, ao contrário dos casos anteriores, é um grupo de bits, e consiste no deslocamento para a esquerda ou para a direita do grupo de bits. O bit inserido é sempre 0, e o bit eliminado pode ser opcionalmente utilizado (flag CF dos registos do [[processador]]).
* [[multiplicação]] (por 2) do operando - caso o deslocamento seja feito para a esquerda;
<pre>
* [[divisão inteira]] (por 2) do operando - caso o deslocalmento seja feito para a direita.
( 101011(43) >> 1 ) = 010101[1]
 
( 101011(43) << 1 ) = [1]010110
Considere-se o número 77 em decimal e o resultado do deslocamento de bits para a esquerda:
</pre>
Em binário: 0100 1101 << 1 = 1001 1010
Em decimal: 77 x 2 = 154
 
Considere-se agora o deslocamento de bits para a direita, para o mesmo valor 77<sub>(10)</sub>:
Em binário: 0100 1101 >> 1 = 0010 0110
Em decimal: 77 / 2 = 38
 
Em arquitecturas [[x86]] o bit excluído é colocado na flag CF (''Carry Flag''), que corresponde ao resto da operação de divisão, pelo que esse bit estaria a 1 no exemplo acima.
 
Já em [[DSP]]s, como por exemplo os da família [[Texas Instruments]] TMS320C2x, há instruções de ''shift'' e de ''rotate''. O ''shift'' causam um deslocamento simples dos bits, para a esquerda (instrução SFL) ou para a direita (instrução SFR), usando o ''carry''. Já o ''rotate'' "roda" os bits através do ''carry'' para a esquerda (instrução ROL) ou para a direita (instrução ROR).
 
== {{Ver também}} ==