Bem-vindos à nossa comunidade!

Junte-se a nós e faça parte hoje mesmo!

Operadores & e | no python

Cadastro
22/6/21
Postagens
90
Curtidas
118
Pontuação
90
Cidade
Canguçu
Recentemente respondi uma pergunta sobre a existência dos operadores & e | no python, e vi que pode existir alguma confusão quando à utilização destes operadores, já que em muitas linguagens, se utiliza && para representar a operação lógica e (and) e || para representar a operação lógica ou (or). No Python, essas operações são realizadas pelos operadores and e or, porém & e | ainda são aceitos no pyhton para realizar operações de lógicas entre a representação binária de elementos.
Enquanto (5 and 3) nos retorna 3, (5 & 3) nos retorna 1, pois ambos os números são convertidos para binário, e então é feito uma operação and bit a bit entre os valores 5 em binário (101) e 3 em binário (011).
Quando se trabalha com valores booleanos, pode não fazer muita diferença entre a utilização dos operadores and e or e dos operadores & e |, já que um valor booleano se trata de um único bit, porém ainda assim é necessário levar em conta outro detalhe: a precedência dos operadores, já que & e | possuem uma precedência maior do que os operadores relacionais, já que em uma expressão do tipo (1<2 & 1<3) primeiro é feito o & entre 2(10) e 1(01), que resulta em 0, tornando essa comparação falsa. Para resolver esse problema, precisa-se colocar as operações relacionais entre parênteses, já que parênteses possuem uma ordem de precedência maior, de modo que ((1<2) & (1<3)) retorna o resultado true que era esperado.
 
Top