Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Melaum

Calculando a potencia de um número dado via deslocamento.

Recommended Posts

Pessoal tô com uma dúvida cruel ..

 

O professor na facul mandou nós calcularmos um programa Java que calculasse o quadrado e o cubo de um determinado número dado através de deslocamento de bit (Operador <<)

 

Tô apanhando mais que o Rocky na quarta versão ....

 

Olha o código que eu já fiz .. mas não tá dando certo o deslocamento.

O pior é que eu to sem uma luz pra tentar me ajudar nessa hora.

 

 

CODE
public class Potencia{

public static void main(String [] args){

int num=8,cubo,quadrado;

 

if(num<=0){

cubo=0;

quadrado=0;

}

else{

if(num<=1){

quadrado=1;

cubo=1;

 

}

 

else{

quadrado=num << 1;

cubo=num<< 2;

}

}

 

 

System.out.println("O quadrado do numero "+num+" eh: "+quadrado);

System.out.println("O cubo do numero "+num+" eh: "+cubo);

}

}

 

Alguém pode me dar um help sobre essa situação ?

Já agradecendo antecipadamente a galera !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o número 2 tem que ser quadrado=num << 1 / cubo << 2

 

Essa fórmula dá pau ... com números menores que 6 e maiores que 8

Dá errado.

 

Que " cheat "

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa qro ver na sala vo lotar esse professor de pergunta heHAU!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos primeiro entender o que os operadores de deslocamento de bits fazem.

 

<< http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Operador de deslocamento para esquerda.

>> http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Operador de deslocamento para direita.

 

 

Esses operadores executam o deslocamento bit a bit.

 

Vamos ao exemplo:

 

Número 12 em decimal, em binário ficaria:

 

1100

 

Vamos usar esse comando:

 

12 << 2

 

Resulta em dois deslocamentos bit a bit para a esquerda.

 

110000 (48 em decimal)

 

se deslocar 2 vezes 48 bit a bit para direita, tenho o 12 novamente

 

48 >> 2

 

Resulta em 12 decimal.

 

 

Com isso vimos que:

 

O deslocamento a esquerda faz com que um número seja multiplicado por 2^número_de_deslocamento

Comprovando no exemplo acima:

 

12 * 2^2 = 48

 

O deslocamento a direita faz com que um número seja dividido por 2^número_de_deslocamento

Comprovando no exemplo acima:

 

48 / 2^2 = 12

 

Agora é pensar um meio para resolver isso.

 

Simples com deslocamento voce não consegue fazer. Exemplo:

 

3 em binário (11)

deslocando 1 bit

(110) 6 em decimal

deslocando 2 bits

(1100) 12 em decimal

 

3^2 é 9.

 

Entendeu?

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse q :

Simples com deslocamento voce não consegue fazer.

Entaum somente por deslocamento naum tem como neh??

soh naum entendi pq ele pediw assim entaum :s

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha o exercio q ele passou corretamente seria assim:

* Calcule a raiz quadrada e cubica de um numero qualquer! para isso use deslocamento de bits!

pode usar deslocamento e outras operações (creio eu neh, senaum como o Kandrade disse num tem como)!

 

se alguem tiver alguma solução, posta ae!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.