thematrix Postado Novembro 26, 2011 Denunciar Share Postado Novembro 26, 2011 (editado) estava olhando algumas coisas sobre operadores bitwise, não entendi muito bem, alguém ai poderia me dar um exemplo de um algoritmo simples, usando operador bitwise? Editado Novembro 26, 2011 por thematrix Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 26, 2011 Denunciar Share Postado Novembro 26, 2011 Há mais de um operador de bit-a-bit.AND (&)OR (|)XOR (^)COMPLEMENT (~)DESLOCAMENTO Á ESQUERDA (<<)DESLOCAMENTO Á DIREITA (>>)Basicamente, são operadores que trabalham diretamente na representação binária dos inteiros.Em alguns casos, usar esses operadores é mais eficiente que usar os operadores habituais. Também, são uteis ao trabalhar com alguns dispositivos que se comunicam com o computador enviando bits de informações.Nem vou postar código porque tu acha facilmente no google. Se tiver alguma dúvida, posta ae Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thematrix Postado Novembro 26, 2011 Autor Denunciar Share Postado Novembro 26, 2011 (editado) vasculhei o google e encontrei muito conteudo, mas nada simples, se não for pedir de mais, so queria um exemplo tipo, um algoritmo de deslocase um numero pra direita e imprimise o resultado na tela. Editado Novembro 26, 2011 por thematrix Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 27, 2011 Denunciar Share Postado Novembro 27, 2011 (editado) Ok.Para deslocar os para a direita, usa-se essa sintaxe:a >> b E para atribuir esse deslocamento á uma variável, você pode usar a maneira reduzida de atribuição normal da linguagem... a >>= b Agora, tendo em mente este código simples: #include <stdio.h> int main(){ int a = 4; //Em binário: 100 int b = 6; //Em binário: 110 printf("%d", a<<b); return(0); } A variável 'a' possui o valor '4'. Em binário, é o equivalente à 100. Através do operador de deslocamento, '100' é deslocado para a esquerda 6 vezes. Com isso... 100 se torna 100000000 Ou seja, a saída do programa acima seria 256 (que é a representação decimal do binário 100000000). Essa mesma lógica se aplica ao deslocamento à direita: a representação em binário do valor é deslocada para a direita. O primeiro elemento, que vem antes do operador de deslocamento, é aquele que será deslocado. O elemento que vem após o operador é aquele que indica quantas vezes o elemento à esquerda será deslocado. Por exemplo a >>= bA representação binária de 'a' será deslocada para a direita 'b' vezes. Após, o resultado (em decimal) será atribuido á variável 'a'.Á grosso modo, é mais ou menos isso. Editado Novembro 27, 2011 por mJi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thematrix Postado Novembro 27, 2011 Autor Denunciar Share Postado Novembro 27, 2011 muito obrigado pela ajuda, vlw mesmo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Novembro 27, 2011 Denunciar Share Postado Novembro 27, 2011 Ah.... Exemplos?Existe aquela coisinha divertida de trocar valores de variáveis sem precisar de uma auxiliar:#include <stdio.h> int main(void) { int v1 = 13, v2 = 25; printf("v1 = %d\nv2 = %d\n\n", v1, v2); v2 ^= v1; v1 ^= v2; v2 ^= v1; printf("v1 = %d\nv2 = %d\n", v1, v2); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 27, 2011 Denunciar Share Postado Novembro 27, 2011 (editado) Ah.... Exemplos?Existe aquela coisinha divertida de trocar valores de variáveis sem precisar de uma auxiliar:#include <stdio.h> int main(void){ int v1 = 13, v2 = 25; printf("v1 = %d\nv2 = %d\n\n", v1, v2); v2 ^= v1; v1 ^= v2; v2 ^= v1; printf("v1 = %d\nv2 = %d\n", v1, v2); return 0; } Ah, bem lembrado... Lembrando que também é possível trocar valores de variáveis sem auxiliar através de operações aritméticas: #include <stdio.h> int main(){ int a = 1, b = 2; printf("A: %d\nB: %d", a, b); a += b; b = a-b; a -= b; printf("\n\nA: %d\nB: %d", a, b); return(0); } Editado Novembro 27, 2011 por mJi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Novembro 28, 2011 Denunciar Share Postado Novembro 28, 2011 Ah, bem lembrado...Lembrando que também é possível trocar valores de variáveis sem auxiliar através de operações aritméticas:Só cuidado com o possível overflow... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
thematrix
estava olhando algumas coisas sobre operadores bitwise, não entendi muito bem, alguém ai poderia me dar um exemplo de um algoritmo simples, usando operador bitwise?
Editado por thematrixLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.