Você está aqui: Java ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Usando o operador de deslocamento de bits para a direita com extensão zero (>>>) da linguagem JavaQuantidade de visualizações: 7381 vezes |
O operador de deslocamento de bits para a direita com extensão zero (>>>) da linguagem Java é usado quando precisamos mover um padrão de bits para a direita uma determinada quantidade de posições, preenchendo os bits à esquerda com zeros, independente se o valor é positivo ou negativo (se o valor for positivo, o resultado da aplicação deste operador é semelhante àquela do operador >>). Comece analizando o seguinte valor binário: a = 00010100 Este valor binário equivale ao valor 20 na base decimal. Se movermos este padrão duas posições para a direita, ou seja, aplicando a operação: b = a >>> 2 o resultado será: a = 00010100 b = 00000101 Note que o valor resultante será 5 na base decimal. Vamos ver isso em Java? Eis o código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public class Main { public static void main(String[] args) { int a = 20; // 00010100 // exibe o valor original (em inteiro e em bytes) System.out.println("a = " + obterBits(a) + " (" + a + ")"); // vamos mover o padrão de bits do primeiro valor 2 posições para // a direita int b = a >>> 2; // vamos mostrar o resultado System.out.println("b = " + obterBits(b) + " (" + b + ")"); } // método auxiliar que converte um inteiro em sua representação em bits public static String obterBits(int valor){ int mascara = 1 << 31; StringBuffer buffer = new StringBuffer(35); for(int i = 1; i <= 32; i++){ if((valor & mascara) == 0){ buffer.append('0'); } else{ buffer.append('1'); } valor <<= 1; if(i % 8 == 0){ buffer.append(' '); } } return buffer.toString(); } } Ao executarmos este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00010100 (20) b = 00000000 00000000 00000000 00000101 (5) Cada troca à direita corresponde à divisão (inteira, desconsiderando as frações) do valor por 2. Assim: 20 / 2 / 2 = 5. Se a operação fosse: b = a >>> 3 o resultado seria 00000010 (2), já que 20 / 2 / 2 / 2 = 2 (note que um bit acabou sumindo aqui). É importante observar que o operador de deslocamento de bits para a direita (>>>) só pode ser aplicado aos tipos int e long. Se fornecermos argumentos do tipo char, byte ou short, estes serão promovidos para o tipo int antes da operação. O número de posições para a troca dos bits sempre estará na faixa de 0 a 31 se o tipo for int e 0 a 63 se o tipo for long. |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Classes e Componentes ::: JComponent |
Java Avançado - Como verificar se uma classe herda de JComponentQuantidade de visualizações: 8570 vezes |
Nesta dica mostrarei como podemos tirar proveito dos métodos getClass(), getSuperclass() e getName() da classe Class para verificarmos se uma determinada classe herda da classe JComponent. Embora este exemplo busque relacionar controles do Java Swing, a técnica usada pode ser aplicada em qualquer classe da linguagem Java. Veja o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; public class Estudos{ public static void main(String args[]){ // verifica se JLabel herda de JComponent JLabel label = new JLabel("Teste"); if(herdaJComponent(label)){ System.out.println("JLabel herda de JComponent"); } else{ System.out.println( "JLabel não herda de JComponent"); } // verifica se Timer herda de JComponent java.util.Timer timer = new java.util.Timer(); if(herdaJComponent(timer)){ System.out.println( "java.util.Timer herda de JComponent"); } else{ System.out.println( "java.util.Timer não herda de JComponent"); } System.exit(0); } static boolean herdaJComponent(Object obj){ Class cls = obj.getClass(); Class superclass = cls.getSuperclass(); while(superclass != null){ String className = superclass.getName(); if(className.equals("javax.swing.JComponent")){ return true; } cls = superclass; superclass = cls.getSuperclass(); } return false; } } Ao executarmos este código nós teremos o seguinte resultado: JLabel herda de JComponent java.util.Timer não herda de JComponent |
Java ::: Coleções (Collections) ::: HashMap |
Como retornar a quantidade de mapeamentos (chave-valor) em um HashMap do Java usando o método size()Quantidade de visualizações: 7803 vezes |
Em algumas situações precisamos saber a quantidade de mapeamentos (chave-valor) contidos em um HashMap. Para isso nós podemos usar o método size(). Veja o exemplo:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos criar uma instância de HashMap HashMap<Integer, String> clientes = new HashMap<Integer, String>(); // vamos adicionar três chaves e seus valores clientes.put(new Integer(1), "Osmar J. Silva"); clientes.put(new Integer(2), "Salvador Miranda de Andrade"); clientes.put(new Integer(3), "Marcos da Costa Santos"); // vamos obter a quantidade de mapeamentos neste HashMap int quant = clientes.size(); // vamos exibir o resultado System.out.println("Este HashMap contém " + quant + " mapeamentos."); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Este HashMap contém 3 mapeamentos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços |
Exercícios Resolvidos de Java - Usando o laço while para encontrar o MDC (Máximo Divisor Comum) de dois númerosQuantidade de visualizações: 1983 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço while para calcular o MDC (Máximo Divisor Comum) de dois números. Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b. Sua saída deve ser parecida com: Informe o primeiro número: 16 Informe o segundo número: 24 O MDC de 16 e 24 é: 8 Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos que o usuário informe dois números System.out.print("Informe o primeiro número: "); int n1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo número: "); int n2 = Integer.parseInt(entrada.nextLine()); int mdc = 1; // partimos do principio de que 1 é o MDC inicial int k = 2; // MDC possível while((k <= n1) && (k <= n2)){ // enquanto k for menor ou igual aos dois números if((n1 % k == 0) && (n2 % k == 0)){ mdc = k; // já temos um novo MDC } k++; // buscamos o novo MDC } // mostramos o resultado System.out.println("O MDC de " + n1 + " e " + n2 + " é: " + mdc); System.out.println("\n"); } } |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |