2009-08-23 6 views
3

J'étudie le guide de certification mysql. à la section Bit de type de données, il est ditMySQL Bit Data Type Espace de stockage

un TBI (4) plaies 4 bits par valeur

et cette exigence de stockage pour une colonne BIT (n) est (n + 7)/8. Je ne comprends pas cette partie. shldnt un BIT (4) prend seulement 4 bits de stockage?

Répondre

4

En fait, c'est une façon maladroite d'arrondir le résultat. Cela signifie que BIT (1) à BIT (8) prend 1 octet, BIT (9) à BIT (16) prend 2 octets, etc ... Il n'y a pas de surcharge de 7 bits. Divisez le nombre de bits par 8 et arrondissez le résultat. BIT (4) prendra 1 octet.

+0

en fait, selon excel et la formule du livre mysql, bit (1-4) prend 1 octet, bit (5-12) 2 octets, bit (3-20) 3 octets, ce qui est assez bizarre, je pense que la formule que vous voulez dire est tout simplement n/8 arrondi? alors je pense que votre méthode a du sens, mais si je devais passer l'examen de certification, je suppose que je dois suivre le livre? et ils auront raison? à moins qu'il n'y ait une errata? – iceangel89

+1

Je pense que "/ 8" est une division entière, semblable à celle-ci: SELECT (7 + 7) div 8; –

+0

ok alors je suppose que cela efface les choses, devinez ordinateurs stocke btyes pas bits? ou plutôt tout ce qui utilise une partie d'un octet sera arrondi? – iceangel89

2

Il semble qu'il y ait un surdébit de 7 bits - identifiant probablement un bloc de mémoire comme stockage BIT.

Ce 7 bits est ajouté au nombre demandé par BIT (n) et le total est divisé par 8 pour donner le nombre d'octets. Le manuel définit (n + 7)/8 comme BYTES

Donc 4 bits nécessite moins de 2 octets. Le manuel dit 'approximativement', car cela dépend si vous parlez des octets entiers ou des fractions.

+0

Il n'y a pas de préfixe autre que la définition de structure de table. Le résultat de la formule est en octets. Cependant la variable n est dans BITS. 1-8 bits = 1 octet de stockage, 9-16 bits = 2 octets, etc. – Beanow