Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
EXPRESSÕES<br />
que o tamanho pré-definido para o tipo dessa variável, logo o compilador não<br />
sabe como "ajustar" os bits excedentes). Nesse caso, o programador deve<br />
indicar ao compilador que tipo de conversão deverá ocorrer, digitando o tipo<br />
de dado que o valor deverá assumir entre parênteses:<br />
//<br />
// Casting entre valores de tipos de dados distintos<br />
//<br />
// Apesar 6 ser um inteiro, o valor da variável grande<br />
// continua sendo do tipo long<br />
long grande = 6;<br />
int pequeno = (int)99L; // sem problemas<br />
float a = 12.121F;<br />
float b = (float)a; // sem problemas<br />
Operadores de deslocamento (>>, >)<br />
<strong>Java</strong> provê operadores para a manipulação dos bits em variáveis de tipo numérico: o deslocamento<br />
aritmético >> e o deslocamento lógico >>>.<br />
O operador de deslocamento aritmético >> executa um deslocamento de um bit para a direita de um<br />
número (na prática, o primeiro argumento desse operador é dividido por dois 'n' vezes – onde n é o<br />
segundo argumento do operador):<br />
8 >> 2 = 2<br />
128 >> 1 = 64<br />
256 >> 4 = 16<br />
* Notação em complemento de dois: o operador >> mantém o sinal do bit mais significativo durante o<br />
deslocamento.<br />
O operador de deslocamento lógico >>> executa um deslocamento no padrão dos bits ao invés do<br />
significado aritmético de um valor numérico. Esse operador sempre adiciona o valor 0 ao bit mais<br />
significativo:<br />
1010 ... >> 2 = 111010 ...<br />
1010 ... >>> 2 = 001010 ...<br />
* Os operadores de deslocamento reduzem seus operandos à direita módulo 32 para um valor do tipo int<br />
e módulo 64 para um tipo long. Dessa forma, para qualquer valor do tipo int:<br />
int x x >>> 32 = x<br />
o operador de deslocamento lógico >>> só pode ser aplicado a valores inteiros, e não é efetivo em<br />
valores int e long. Se for aplicado a valor short ou byte, o valor será promovido a um int antes da<br />
aplicação do operador. Por isso, um deslocamento sem sinal acaba se tornando um deslocamento com<br />
sinal.<br />
24