bom pessoal estou estudando e passei o dia a entender como funciona os operadores shift pois os exemplos sao escassos e as explicaçoes complexas acho que eu entendi e crei um programinha pra poder entender e disponibilizar para o pessoal…seguindo este raciocinio
[URL=http://www.turboimagehost.com/p/1611633/a.jpg.html][/URL]
funciona da seguinte maneira voce coloca um valor inteiro ou binario… e coloca um true ou false para decidir com qual trabalhar “inteiro ou binario” e a rotina vai tem mostra as operaçoes x>>2 x<<2 x>>>2 funciona esta perfeito podem rodar ele e testar com os valores positivos e negativos queria se alguem podia dar uma conferida na logica pra ver se ta certo. e queria saber como eu poderia resolver este erro que ocorre quando tento usar uma numero binario negativo muito grande no exemplo o numero -12 que representa esse numero 11111111111111111111111111110100
Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111110100"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Binario.main(Binario.java:17)
aki esta o codigo funcionando com positivos e negativos…
so nao funfa com negativos binarios muito grandes como o 12 obrigado…
/**
* @author Diabo Loiro
*/
public class Binario {
public static void main(String args[]){
int variavel=4;//variavel em questao inteira
String numeroBinario="1000";//variavel em questao binaria
Boolean trabalharComInteiro=true;//true para trabalhar com inteiros e false para binarios
//rotina para trabalhar com nomero binario
if(trabalharComInteiro==false){
variavel=Integer.parseInt(numeroBinario,2);
}
int resultado;//guarda o resultado de variavel>>2
int resultado2;//guarda o resultado de variavel<<2
int resultado3;//guarda o resultado de variavel>>>2
System.out.println("Valor da variavel em questao = "+variavel+" \n\nSeu valor em Binario = "+Integer.toBinaryString( variavel )+"\n" );
//expressoes
resultado=variavel>>2;
resultado2=variavel<<2;
resultado3=variavel>>>2;
//realiza a demostraçao e verifica se eh positivo ou negativo para mudar a explicaçao
System.out.println("resultado de variavel >> 2 em binario = "+ Integer.toBinaryString( resultado ) );
System.out.println("resultado de variavel >> 2 em decimal = "+resultado );
if(variavel>=0){
System.out.println("Como se pode verificar sao adicionados 2 zeros a esquerda que sao omitidos pois zero a esquerda nao vale nada"+"\n");
}else{
System.out.println("Como se pode verificar sao adicionados 2 zeros a esquerda E CONTINUA NEGATIVO"+"\n");
}
//realiza a demostraçao e verifica se eh positivo ou negativo para mudar a explicaçao
System.out.println("resultado de variavel << 2 = "+ Integer.toBinaryString( resultado2 ) );
System.out.println("resultado de variavel << 2 em decimal = "+resultado2 );
if(variavel>=0){
System.out.println("Como se pode verificar sao adicionados 2 zeros a direita"+"\n");
}else{
System.out.println("Como se pode verificar sao adicionados 2 zeros a direita E CONTINUA NEGATIVO"+"\n");
}
//realiza a demostraçao e verifica se eh positivo ou negativo para mudar a explicaçao
System.out.println("resultado de variavel >>> 2 = "+ Integer.toBinaryString( resultado3 ) );
System.out.println("resultado de variavel >>> 2 em decimal = "+resultado3 );
if(variavel>=0){
System.out.println("Como se pode verificar sao adicionados 2 zeros a esquerda que sao omitidos pois zero a esquerda nao vale nada"+"\n");
}else{
System.out.println("Como se pode verificar sao adicionados 2 zeros a esquerda E O NUMERO VIROU POSITIVO"+"\n");
}
}
}