Introdução à programação/Lógica
Lógica binária
[editar | editar código-fonte]A lógica binária, ou bitwise operation é a base de todo o cálculo computacional. Na verdade, são estas operações mais básicas que constituem todo o poderio dos computadores. Qualquer operação, por mais complexa que pareça, é traduzida internamente pelo processador para estas operações.
Operações
[editar | editar código-fonte]NOT
[editar | editar código-fonte]O operador unário NOT, ou negação binária resulta no complemento do operando, i.e., será um bit '1' se o operando for '0', e será '0' caso contrário, conforme podemos confirmar pela tabela verdade:
A | ¬A |
1 | 0 |
0 | 1 |
Implementação:
Se isto NOT aquilo
AND
[editar | editar código-fonte]O operador binário AND, ou conjunção binária devolve um bit 1 sempre que ambos operandos sejam '1', conforme podemos confirmar pela tabela verdade:
A | B | A ∧ B |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Implementação:
Se isto AND aquilo, Fazer assim
OR
[editar | editar código-fonte]O operador binário OR, ou disjunção binária devolve um bit 1 sempre que pelo menos um dos operandos seja '1', conforme podemos confirmar pela tabela verdade:
A | B | A ∨ B |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Implementação:
Se isto OR aquilo, Fazer assim
XOR
[editar | editar código-fonte]O operador binário XOR, ou disjunção binária exclusiva devolve um bit 1 sempre que apenas um dos operandos seja '1', conforme podemos confirmar pela tabela verdade:
A | B | ∨ A ∨ B |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Implementação:
isto XOR aquilo, Fazer assim
Shift
[editar | editar código-fonte]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 registradores do processador).
( 101011(43) >> 1 ) = 010101[1] ( 101011(43) << 1 ) = [1]010110