Jump to content
Fórum Script Brasil
  • 0

operadores bitwise


thematrix

Question

7 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

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 >>= b

A 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 by mJi
Link to comment
Share on other sites

  • 0
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 by mJi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...