Escolar Documentos
Profissional Documentos
Cultura Documentos
Disciplina PROGRAMAÇÃO
Instrutor DANIEL CORTELETTI
OPERADORES
São os símbolos usados para realizar operações lógicas e aritméticas, estabelecendo também a prioridade e
formato destas operações.
Abaixo uma breve tabela dos operadores, apresentada de forma objetiva e resumida.
XOR (OU
^ x = a ^ b; se o bit n do primeiro valor estiver desligado, e do
exclusivo)
segundo valor ligado, o bit n do resultado estará
ligado.
1010 ^ 0110 = 1100
Inverte o valor de todos os bits.
~ NOT (NÃO) x = ~a;
~ 0101 = 1010
RIGHT SHIFT Desloca os bits para direita, um determinado número
(Deslocamento x = a >> 1; de casas.
>>
de bits para x = a >> 3; 0101 >> 1 = 0010
direita) 0101 >> 2 = 0001
LEFT SHIFT Desloca os bits para esquerda, um determinado
(Deslocamento x = a << 1; número de casas.
<<
de bits para x = a << 2; 0101 << 1 = 1010
esquerda) 0101 << 2 = 0100
Operadores avançados :
Observando os trechos de programa abaixo, veja quais são os principais problemas enfrentados com os
operadores:
if (x = 10)
{
...
}
O problema no trecho de programa acima está no fato de ter se utilizado o operador de atribuição
(=) no lugar do operador de comparação (==). Isso fará com que a variável x passe a valer 10, e
como este valor é diferente de zero, o conteúdo das chaves (bloco de instruções) será executado,
mesmo que a variável x inicialmente estivesse com valor diferente de 10.
No trecho de programa acima, uma operação é efetuada entre duas variáveis do tipo INT, e o
resultado da operação irá ultrapassar a capacidade de armazenamento para este tipo de dados (int
suporta valores inteiros de 0 a 255). Mesmo que a variável X seja do tipo long suporte este valor, o
dado é calculado somente com tipos INT, e o resultado será truncado (não será 300, e sim 44). Para
resolver este problema:
- Pode ser declarada uma das variáveis A ou B como um LONG. Esta solução é mais
simples, mas pode causar desperdício de memória.
- Pode ser utilizado um modelador (casting) em frente a uma das variáveis utilizadas no
processo. Ex: X = (long)A * B; Esta é a solução mais adequada, pois a variável A será utilizada na
operação como se fosse uma variável do tipo long (16 bits), forçando a multiplicação de 16 bits e
resultado um valor de 16 bits.