associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "BitwiseOperators"

Diferenças entre as versões de 1 e 3 (2 versões de distância)
Revisão 1e 2005-08-06 08:33:08
Tamanho: 1045
Comentário:
Revisão 3e 2008-09-26 14:07:48
Tamanho: 2838
Editor: localhost
Comentário: converted to 1.6 markup
Deleções são marcadas assim. Adições são marcadas assim.
Linha 16: Linha 16:

=== x << y ===

  Retorna "x" com os seus bits movidos "y" casas à esquerda, adicionando zeros aos bits "novos" da direita. Isso é a mesma coisa que multiplicar x por 2**y.
  Exemplo:
    14 << 9 # decimal
    7168
    
    1110 << 1001 # binario
    1110000000000

=== x >> y ===

   Retorna "x" com seus bits movidos "y" casas à direita. Isso é o mesmo que x // 2 ** y.
   Exemplo:
     14 >> 9 # decimal
     0
     2 >> 1 #decimal
     1

     1110 >> 1001 # binario
     0
     10 >> 1 # binario
     1

=== x & y ===

    Realiza um "E" binário. Cada bit da saída é 1 se ambos os bits correspondentes em "x" E "y" forem 1, do contrário, retorna 0.
    Exemplo:
      14 & 9 # decimal
      8

      1110 & 1001 # binario
      1000

=== x | y ===

    Realiza um "OU" binário(OU inclusivo). Cada bit da saída é 0 se ambos os bits correspondentes em "x" E "y" forem 0, do contrário, retorna 1.
    Exemplo:
      14 | 9 # decimal
      15

      1110 | 1001 # binario
      1111

=== ^ ===

    Realiza um OU exclusivo binário. Cada bit da saída é o mesmo ao bit correspondente em "x" se aquele bit em "y" for 0 e for o complemento do bit em x se o complemento daquele bit em "y" for 1.
    Exemplo:
      14 ^ 9 # decimal
      7

      1110 ^ 1001 # binario
      0111

=== ~x ===

    Retorna o complemento de "x". Entenda isso como se cada bit fosse invertido de valor.
    Exemplo:
      ~14 # decimal
      -15
    Isso ocorre porque algumas notações binárias consideram o primeiro bit de cada número como o sinal do mesmo. Assim, se ele for um "1", ele é um número negativo, do contrário, ele é positivo.

fonte: http://wiki.python.org/moin/BitwiseOperators

----
CarlosMoraisDosSantos

Python possui 6 operadores obscuros. Os operadores binários <<, >>, &, |, ~, e ^.

A base numérica binária é composta apenas de dois algarismos(0 e 1), enquanto a base decimal é composta de dez(0, 1, 2, 3, 4, 5, 6, 7, 8 e 9). A forma como os números são representados é drásticamente diferente. Por exemplo: 1 é representado como 1. 2 é representado como 10. 3 é representado como 11. 4 é representado como 100. 5 é representado como 101.

...e assim vai. O número 987123 é representado como 11110000111111110011.

Isso é binário. Na base decimal você pode representar nove como 9. Um dez é representado como 10, ou seja, você adiciona mais um dígito, para indicar uma dezena. Para mais informações, veja http://en.wikipedia.org/wiki/Binary_numeral_system .

Os operadores binários são diferentes dos operadores "normais" porque eles não encaram os números "14" e "9" como 14 e 9, mas sim como as sequências de bits que compõem esses números, ou seja, 1110 e 1001. Vejamos o que cada operador faz:

x << y

  • Retorna "x" com os seus bits movidos "y" casas à esquerda, adicionando zeros aos bits "novos" da direita. Isso é a mesma coisa que multiplicar x por 2**y. Exemplo:
    • 14 << 9 # decimal 7168

      1110 << 1001 # binario 1110000000000

x >> y

  • Retorna "x" com seus bits movidos "y" casas à direita. Isso é o mesmo que x // 2 ** y. Exemplo:
    • 14 >> 9 # decimal 0 2 >> 1 #decimal 1

      1110 >> 1001 # binario 0 10 >> 1 # binario 1

x & y

  • Realiza um "E" binário. Cada bit da saída é 1 se ambos os bits correspondentes em "x" E "y" forem 1, do contrário, retorna 0. Exemplo:
    • 14 & 9 # decimal 8

      1110 & 1001 # binario 1000

x | y

  • Realiza um "OU" binário(OU inclusivo). Cada bit da saída é 0 se ambos os bits correspondentes em "x" E "y" forem 0, do contrário, retorna 1. Exemplo:
    • 14 | 9 # decimal 15 1110 | 1001 # binario 1111

^

  • Realiza um OU exclusivo binário. Cada bit da saída é o mesmo ao bit correspondente em "x" se aquele bit em "y" for 0 e for o complemento do bit em x se o complemento daquele bit em "y" for 1. Exemplo:
    • 14 ^ 9 # decimal 7 1110 ^ 1001 # binario 0111

~x

  • Retorna o complemento de "x". Entenda isso como se cada bit fosse invertido de valor. Exemplo:
    • ~14 # decimal -15
    Isso ocorre porque algumas notações binárias consideram o primeiro bit de cada número como o sinal do mesmo. Assim, se ele for um "1", ele é um número negativo, do contrário, ele é positivo.

fonte: http://wiki.python.org/moin/BitwiseOperators


CarlosMoraisDosSantos