Ir para conteúdo
Fórum Script Brasil
  • 0

operadores bitwise


thematrix

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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.

Editado por mJi
Link para o comentário
Compartilhar em outros 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;
}

Link para o comentário
Compartilhar em outros 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);
}

Editado por mJi
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...