Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Opérateur binaire 'ou', pour quelle situtation?

+1 vote

Bien compris le fonctionnement. Pouvez-vous me donner un exemple de cas d'utilisation ?

liée à une réponse: Que fait l'opérateur |
demandé 8-Jan-2016 par anonyme
edité 12-Jan-2016 par Sam

4 Réponses

0 votes

Regle: "De deux choses l’une ou l’autre, ou les deux".

Tu as un circuit electrique contenant une ampoule S, et deux interrupteurs, A, B. Si ton ampoule s'allume, lorsqu'au moins l'un des deux interrupteurs est fermé. Tu obtiens ce qu'on appelle un circuit "ou". L'ampoule s'allume lorsque l'interrupteur A "ou" l'interrupteur B est fermé.

L'ampoule ne peut etre que dans deux etats, allumée, ou eteinte.
L'interrupteur ne peut etre que dans deux etats, ouvert, ou fermé.
On peut donc faire une analogie avec du code (vu que l'on sait jongler avec des booleens).

Si tu as une fonction prenant deux arguments et renvoyant un resultat. Si le resultat est ds un etat "vrai", lorsqu'au moins un des arguments est dans un etat "vrai", alors ta fonction peut etre ecrite.

f = a|b

Cet operateur, ainsi que d'autres, "les bitwises operators", sont utilisés pour faire de la programmation de drivers, de la programmation de cartes graphiques, du codage (transmission reseau). La plupart des operations logiques et arithmetiques de ton ordinateur ne sont en fait qu'une combinaison de ces bitwises operators.

Does it make sense?

répondu 8-Jan-2016 par Nsukami_ (1,998 points)
edité 8-Jan-2016 par Nsukami_
0 votes

Nsukami_ explique ici le principe général du OU logique, mais ça ne dit pas tout sur son fonctionnement en python.

Donc en python a | b effectue le OU logique des valeurs binaires de a et b, soit on prend la représentation binaire de a et de b, et on calcule le OU logique des deux terme à terme.

Exemple : pour a = 0b011001 et b = 0b101010, a | b = 0b111011.

Au final, c'est utile surtout pour faire des traitements (pas vraiment très pythoniques) sur des données binaires, par exemple pour modifier la valeur d'un bit d'une variable.

répondu 10-Jan-2016 par yoch (2,514 points)
–5 votes

Il faut surtout retourner à l'école...

répondu 12-Jan-2016 par DoubleNain (1,718 points)

Il n'a peut être jamais eu ce genre de cours à l'école.

0 votes

Le seul cas pratiques auquel j'ai été confronté sont à l'utilisation de masques sur des valeurs binaires. C'est très utilisé dans la programmation des microcontrôleurs (en C/C++).
En Python on peut en avoir besoin si on veut manipuler des masques, par exemple sur des adresse IP.

Un exemple :
j'ai un registre de microcontrôleur de 8 bits qui vaut reg = 0b10110001
bits

Je veux mettre le bit 2 à 1 :

reg = reg | 0b00000100

Je peux l'écrire de façon plus simple avec

reg = reg | 0x04

Autre exemple, je veux mettre à 0 le bit b0

reg = reg & 0xFE

Plus tricky, je veux mettre à 1 les bits b0 et b7 et à 0 les bits b3 et b4

reg = reg & 0xE7 | 0x81

Quand tu n'as pas l'habitude ce n'est pas très lisible, mais si tu exécutes ce genre de chose dans un environnement critique en terme de CPU, c'est très intéressant.

répondu 21-Jan-2016 par showok (212 points)
...