Stockage d'informations booléennes
Bitmasking
Est il possible de différencier uniquement chaque humain de la terre ?
Le calcul booléen
- Algébre utilisant des expressions à 2 valeurs
- Exemples: interrupteur on/off, vrai ou faux, Oui ou Non, bit
Multiples valeurs booléennes
- Si N valeurs booléennes, 2^n états possibles existent
- Possible d'utiliser une expression binaire ou décimale
- Il existe une et une seule façon de décomposer un nombre décimal en nombre binaire
Combien d'humains sur terre ?
- 7.9 billions de humains sur terre (Novembre 2021)
- En binaire: 111010110111000000110111100000000
- Au moins 33 booléens, arrondissons à 34
Comment différencier chaque humain ?
Il existe théoriquement 34 "yes-no" questions capable de "classifier" chaque humain.
Quelles sont les questions que vous pouvez imaginer ?
Application en programming et notre base de données
Imaginons un questionnaire à 3 questions ?
- Avez-vous eu le COVID ?
- Avez-vous plus de 30 ans ?
- Vivez-vous dans le 15ème arrondissement ?
Représentation des questions en binaire (Bitmasking)
- gotCovid? = 001 (1)
- has30? = 010 (2)
- liveIn15? = 100 (4)
Le cas "Louis"
- Réponses: Oui / Oui / Oui
- Converti en binaire: 1 1 1
- Stocké en décimal: 7
Le cas "Isao"
- Réponses: Non / Oui / Oui
- Converti en binaire: 0 1 1
- Stocké en décimal: 3
Quel serait le décimal stocké pour vous ?
Comment connaitre une information parmi les 3 ?
- Qu'a répondu l'utilisateur, si on a stocké
- 0 ? 6 ? 4 ?
- Opération
Comment connaitre une information parmi les 3 ?
- Qu'a répondu l'utilisateur, si on a stocké: 0 ? 6 ? 4 ?
- Opération bit à bit
- 5 & 4 = 4
- 5 & 2 = 0
Pros & Cons
- Ultra light à stocker, une seule colonne
- Peut etre difficile à appréhender si nombre de booléens importants (que veut dire 355343 ?)
Cas d'utilisation courante: Les autorisations de fichiers sur linux et macos
- 7: Tous les droits (écriture, lecture, éxecution) => rwx
- 5: (lecture et éxecution) => r-x