Duvida sobre a utilização de operador / *

3 respostas
P

Olá,

estava vendo uma documentação java e caiu essas três questões abaixo e não estou
conseguindo resolver alguém poderia me ajudar.

  1. Divida um número por 2 sem utilizar o operador /.
  2. Multiplique um número por 8, sem utilizar o operador *.
    3)Declare um inteiro de valor 10 e mostre na tela o valor do terceiro bit mais significativo (da
    direita para a esquerda).

Agradeço ajuda .

abs

3 Respostas

E

A segunda é fácil.

Como é que você multiplica algo por 8 usando apenas adições? Se o valor estiver em x, você pode fazer algo como:

x + x + x + x + x + x + x + x

A primeira é um pouco mais chata, mas você só precisa de um while.

Digamos que você tem o número 12. Para dividir isso por 2, você pode arranjar 2 variáveis, iniciar uma com o valor 12 e a outra com 0, e ir descontando 1 da primeira e acrescentando 1 na segunda variável, até que fiquem iguais (ou pelo menos a primeira ficar menor que a segunda). No caso 12:

x = 12, y = 0
x = 11, y = 1 (descontei 1 da primeira variável e acrescentei 1 à segunda variável)
x = 10, y = 2

x = 7, y = 5
x = 6, y = 6 --> aqui x <= y, e então pronto, você conseguiu determinar que a metade de 12 é 6.

No caso 5 (a metade de 5 é 2, e sobra 1, não?)
x = 5, y = 0
x = 4, y = 1
x = 3, y = 2
x = 2, y = 3 -> neste caso, x <= y , e você determinou que a metade de 5 é 2.

E

Para resolver a 1, também vale você usar o operador “>>”. Isso é mais simples, basta usar “>> 1”. Por exemplo:

12 >> 1 --> 6
5 >> 1 --> 2

E

A segunda requer o operador “<<”. Neste caso, você precisa passar o valor 3.

Por exemplo, se você tem o valor 5, para multiplicar por 8, você faz:

5 << 3

Isso tem o valor 40.

OK?

Criado 29 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 3
Participantes 2