Ir para conteúdo

POWERED BY:

Arquivado

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

Ana Fontoura

[Resolvido] Transformar em binário usando operadores bit a bit

Recommended Posts

Olá! Estou com problemas para entender um método que recebe como parâmetro um número decimal e imprime o mesmo em binário, utilizando operadores bit a bit. Eu não entendi o teste dentro do if (por que o ">0"? e o que resulta do teste "n8bit & movel"?), que foi comentado no código. Obrigada.

 

void Bin::mostrabindec(unsigned char n8bit)
{
	if (sentido == 1)
		movel=128;
	else
		movel=1;
	cout << "binario: ";
	for (i=0;i<8;i++)
	{
		if ((n8bit & movel) > 0)       //esse if
			cout << "1 ";
		else
			cout << "0 ";
		if (sentido == 1)
			movel=movel >> 1;
		else
			movel=movel << 1;
	}
	cout << "\ndecimal: " << n8bit << "\n";	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ana,

 

O teste dentro do if faz uma operação lógica "E" nos bits do n8bit e do movel, descobrindo assim o valor do n8bit em binario.

Exemplo para o movel = 128 e n8bit = 127(que e 10000001 em binario):

movel = 128, em binario: 10000000

n8bit = 127, em binario: 10000001

Resultado do if : 10000000

 

Como este resultado é maior que zero imprima 1, desloca o bit do movel para a direita e repete o teste:

movel = 64, em binario: 01000000

n8bit = 127, em binario: 10000001

Resultado do if : 00000000

 

Como este resultado é zero imprima 0, desloca o bit do movel para a direita e repita o teste mais 6x....

 

Sacou?

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.