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