thematrix Posted November 26, 2011 Report Share Posted November 26, 2011 (edited) 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? Edited November 26, 2011 by thematrix Quote Link to comment Share on other sites More sharing options...
0 mJi Posted November 26, 2011 Report Share Posted November 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 Quote Link to comment Share on other sites More sharing options...
0 thematrix Posted November 26, 2011 Author Report Share Posted November 26, 2011 (edited) 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. Edited November 26, 2011 by thematrix Quote Link to comment Share on other sites More sharing options...
0 mJi Posted November 27, 2011 Report Share Posted November 27, 2011 (edited) 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. Edited November 27, 2011 by mJi Quote Link to comment Share on other sites More sharing options...
0 thematrix Posted November 27, 2011 Author Report Share Posted November 27, 2011 muito obrigado pela ajuda, vlw mesmo Quote Link to comment Share on other sites More sharing options...
0 == Douplus == Posted November 27, 2011 Report Share Posted November 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; } Quote Link to comment Share on other sites More sharing options...
0 mJi Posted November 27, 2011 Report Share Posted November 27, 2011 (edited) 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); } Edited November 27, 2011 by mJi Quote Link to comment Share on other sites More sharing options...
0 == Douplus == Posted November 28, 2011 Report Share Posted November 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... Quote Link to comment Share on other sites More sharing options...
Question
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?
Edited by thematrixLink to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.