Melaum 0 Denunciar post Postado Março 23, 2008 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
quitZAUMMM 18 Denunciar post Postado Março 24, 2008 você esta errando na ora de deslocar os bits! faça assim: quadrado = num << 3; cubo = num << 6; http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Melaum 0 Denunciar post Postado Março 25, 2008 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
quitZAUMMM 18 Denunciar post Postado Março 25, 2008 nossa qro ver na sala vo lotar esse professor de pergunta heHAU! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Março 25, 2008 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
quitZAUMMM 18 Denunciar post Postado Março 25, 2008 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
Kandrade 7 Denunciar post Postado Março 25, 2008 Tem que analisar cada caso e verificar se tem algum meio matemático. Ex: 3 >> 1 = 6 6 + 3 = 9 mas isso tem que ser analisado com calma. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 25, 2008 a entendi oq você quis dizer! + é verdade tem q analizar cada caso!! no fim da tarde vo tentar analizar + a fundo isso!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 27, 2008 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