O que faz os >> << > ?[RESOLVIDO]

14 respostas
jingle

bom andei olhando pelo forum e encontrei este código.

public class MathUtils{

   public long fatorial(long n){
   	 if (n==0)
   	 	return 1;   	 
   	 else
   	 	return n*fatorial(n-1);  	
   }
   
   public String decimalToBinary(int d){   
    String result="";     
    while(d>0){   
      result =(d&1)+result;   
      d>>=1;   
    }  
    return result;   
  }    
  
  public int binaryToDecimal(String b){   
    int i, result=0;     
    for(i=0;i<b.length();i++){   
      result><<=1;   
      if(b.charAt(i)=='1') result++;   
    }     
    return result;   
  }   	
}

Repare que em alguns momentos tem uns >> << > < alguém consegue me definir o que faz?

14 Respostas

thegoergen

Eu também já vi isso em alguns códigos, e fiquei curioso para saber…

Alguém responde. :lol:

renews

Ele move bits pra direita >> ou pra esquerda <<, programação de baixo nível.

AlanLojudice

Procurei na net pra ver se achava alguma coisa…E achei esse link que da uma breve explição.

Ve se serve pra vocês tiraram alguma duvida.

http://www.dm.ufscar.br/~waldeck/curso/java/part25.html

[]´s

xandevieira

<< desl. a esquerda ex. x<<Y desloca os bits de x para esquera y posições

desl. a direita ex. x>>Y desloca os bits de x para direita y posições

desl.a direita ex. x>>>y desloca os bists de x para direita y posições preenchendo com 0(zero) a esquerda

thegoergen

Nossa!! :-o

Mas em Java precisa disso??

pissurno

deslocamento direto no registrador para calculos binarios se quer mais detalhes procure por Algoritmo de Booth. :slight_smile:

jingle

hmmm valeu pessoal

T

Nossa!! :-o

Mas em Java precisa disso??

Se você acha que Java é Cobol (VB não!), é claro que não precisa.
Mas Java é usado para um monte de coisas diferentes - criptografia, por exemplo - e nesses campos de atuação você precisa de “<<”, “>>” e “>>>”.

pintofree

Nossa!! :-o

Mas em Java precisa disso??

precisa pra facilitar o trabalho com binarios, lah embaixo mesmo. programando em linguagem de maquina quase heheh

thegoergen

Entendi! :idea:

Valeu… era só uma dúvida mesmo!

caique_castanho

Operador de deslocamento de bits, se você desloca 1 bit a esquerda você na verdade está multiplicando o número original por 2, se você desloca um bit a direita você está dividindo o número original por 2, mas porque 2 ? Porque 2 é o número de valores possíveis de serem representados por um bit na base 2 , esses valores são 0 ou 1. Pra ficar mais claro na base 10 é possível representar 10 valores: 0,1,2,3,4,5,6,7,8 e 9 , se você deslocar um dígito a esquerda em um número na base 10, o que acontece com ele ? é multiplicado por 10 !

Ex: 12 , deslocando uma casa a esquerda fica 120

Você pode também usar o operador para deslocar várias casas, por exemplo: O numero 4 em binário é: 100

int num = 4;
num = num << 2;

O valor de num no final será num multiplicado por 2 elevado ao número de bits deslocados, nesse caso será 16, ou 10000 em binário depois de deslocar 2 casas.

Espero que tenho ajudado, e desculpem se falei alguma *****…rsrs

jingle

Melhorou bastante. já tinha entendido o que era e agumas de suas utilizaçoes mas com seu exemplo ficou ainda mais claro.
exemplos praticos são sempre os melhores. :wink:

fbeli

linguagemn de máquina com java foi forte!

D

thegoergen wrote:
renews wrote:
Ele move bits pra direita >> ou pra esquerda <<, programação de baixo nível.

Nossa!!

Mas em Java precisa disso??

precisa pra facilitar o trabalho com binarios, lah embaixo mesmo. programando em linguagem de maquina quase heheh

Eu não diria cobol…e sim PL I XD

Criado 26 de março de 2008
Ultima resposta 26 de mar. de 2008
Respostas 14
Participantes 11