30.06.2013 Views

Apostila Java

Apostila Java

Apostila Java

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!