Olá Pessoal, tudo bom?
Esse é o último post relacionado a parte de Operadores no Java. Ele é um post complemento aos operadores de atribuição, pois naquele momento falamos apenas sobre as atribuições com operadores aritméticos. Nessa nova parte iremos complementar com os outros operadores existentes que podem ser utilizados junto com a atribuição no caso de hoje os operadores Shift. A décima sexta parte desse artigo se encontra aqui. Confira na continuação desse artigo sobre os operadores de atribuição Shift:
Operadores de Atribuição
Forma de você atribuir valores a um determinado endereço de memória representado em uma variável. Maiores detalhes veja aqui.
Combinando com Operadores Shift
Outro aspecto do operador de atribuição é que ele pode ser combinado com os operadores Shift, pois a operação bitmask = bitmask << flag, pode ser reescrita como bitmask <<= flag.
Operador | Descrição |
---|---|
<<= | Operador Bit Shift Left para preenchimento de zeros a direita, quantos bits forem informados pelo operador 2 |
>>= | Operador Bit Shift para preenchimento de zeros ou um a esquerda, dependendo do bit mais significativo, quantos bits forem informados pelo operador 2 |
>>>= | Operador Bit Shift para preenchimento de zeros a esquerda, quantos bits forem informados pelo operador 2 |
Dessa forma podemos reescrever o código dos posts relacionados aos operadores shift da seguinte forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package br.com.mauda.operadores; public class OperadoresAtribuicao3 { public static void main (String[] args) { //Bit Shift Left int bitmask = 0x000F; int flag = 1; System.out.println("Valor Original do bitmask: " + bitmask); System.out.println("Valor Original do bitmask em binário: " + Integer.toBinaryString(bitmask)); bitmask <<= flag; System.out.println("\nResultado da operacao bit shift left 1: " + bitmask); System.out.println("Resultado da operacao bit shift left 1 em binario: " + Integer.toBinaryString(bitmask)); //Bit Shift Right bitmask = 0x000F; flag = 1; bitmask >>= flag; System.out.println("\nResultado da operacao bit shift right 1: " + bitmask); System.out.println("Resultado da operacao bit shift right 1 em binario: " + Integer.toBinaryString(bitmask)); //Unsigned Bit Shift Right bitmask = 0x000F; flag = 1; bitmask >>>= flag; System.out.println("\nResultado da operacao unsigned bit shift right 1: " + bitmask); System.out.println("Resultado da operacao unsigned bit shift right 1 em binario: " + Integer.toBinaryString(bitmask)); } } |
Perceba que as linhas grifadas foram alteradas para o novo formato. O resultado final permanece inalterado:
O resultado da execução dessa classe será o seguinte:
1 2 3 4 5 6 7 8 9 10 11 |
Valor Original do bitmask: 15 Valor Original do bitmask em binário: 1111 Resultado da operacao bit shift left 1: 30 Resultado da operacao bit shift left 1 em binario: 11110 Resultado da operacao bit shift right 1: 7 Resultado da operacao bit shift right 1 em binario: 111 Resultado da operacao unsigned bit shift right 1: 7 Resultado da operacao unsigned bit shift right 1 em binario: 111 |
Precedência dos Operadores
Finalizando a tabela de precedência de operadores com os últimos operadores agregados com a atribuição na última posição da tabela:
Ordem | Tipo de Operador | Precedência |
---|---|---|
1 | Pós Fixo | expr++ expr– |
2 | Pré fixo e Unário | ++expr –expr +expr -expr ~ ! |
3 | Multiplicativo | * / % |
4 | Aditivo | + – |
5 | Shift | << >> >>> |
6 | Relacional | > >= <= < instanceof |
7 | Igualdade | == != |
8 | Bitwise AND | & |
9 | Bitwise exclusive OR | ^ |
10 | Bitwise inclusive OR | | |
11 | AND Lógico | && |
12 | OR Lógico | || |
13 | Ternário | ? : |
14 | Atribuição | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
finnaly{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply