Raiz e deslocamento de bits

Boa noite a todos!
Gostaria de saber se alguêm por acaso sabe fazer a raiz quadrada ou cúbica de algum número usando operadores de deslocamentos de bits?
Meu professor me passou essa e eu estou rachando a cabeça de tanto pensar e não to conseguindo!!

Será que ninguêm sabe??
Preciso pelo menos de uma luz!!!
Obrigado!!!

Eu peguei esta mão aqui, e fui no Google:

Cara, raiz quadrada com deslocamento de bits eu nunca ouvi falar. Existe uma classe Math q tem um método para calcular a raiz.

Math.sqrt(10.0);

Você pode deslocar bits usando os operadores << >>, q deslocam bit à direita e à esquerda. Agora calcular raiz utilizando bit a bit eu n sei, e gostaria de saber tb.

Espero ter ajudado! :lol:

Bom vou copiar o que me responderam sobre os deslocamento de bit talvez possa te ajudar. (autor do comentario caique_castanho)

Vamos pegar o algoritmo que o Aldrin achou (o artigo é muito interessante, aliás, e ensina como é que funciona o algoritmo de extração de raízes quadradas que se ensinava na escola há uns 30 anos atrás - ainda ensinam isso?)

package exemplos;

public class RaizQuadrada {
	// Adaptado para o Java - o original era em C para 32 bits.
	// Números mágicos: 
	// 64 = número de bits em um long
	// 32 = metade de 64
	// 62 = 64 - 2
	static int sqrt(long a) {
		long rem = 0;
		long root = 0;
		long divisor = 0;
		for (int i = 0; i < 32; i++) {
			root <<= 1;
			rem = ((rem << 2) + (a >>> 62));
			a <<= 2;
			divisor = (root << 1) + 1;
			if (divisor <= rem) {
				rem -= divisor;
				root++;
			}
		}
		return (int) root;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(sqrt(123456));
		System.out.println((int) Math.sqrt(123456));
	}

}

Caraca… funciona… :-o

thingol , podia explicar melhor o algoritmo?? Valeu

Acho que a explicação do sr. Jack W. Crenshaw (que escreveu o artigo original sobre o tal algoritmo, que ele implementou em C mas passei para Java) é mais que suficiente. Veja de novo o link do Aldrin: http://www.embedded.com/98/9802fe2.htm

Boa tarde a todos!!
thingol gostei muito da estrutura porém não entendi muito bem!!
-O resultado obteve 351
-E o meu professor não me ensinou ainda este comando sqrt!! O que é sqrt??

sqrt = “square root” (raiz quadrada).
Não se prenda só ao que seu professor ensina.
Ele é como um guia de excursão; se você fizer uma viagem e visitar só os lugares que seu guia indica, você vai perder muitas coisas importantes.

Obrigado tingol!!!