Document officiel dit que UINT64 est un entier non signé de 64 bits, cela signifie-t-il que tout numéro UINT64 devrait prendre 8 octets de stockage, quelle que soit la taille de la taille ou de la taille?
EDIT: P>
Merci pour la réponse de chacun! P>
J'ai soulevé le doute lorsque j'ai remarqué que J'ai ensuite trouvé une réponse à mon doute dans le code source de Golang Lib: P> binary.putturint code> consomme jusqu'à 10 octets pour stocker un grand
uint64 code>, malgré cela Maximum
uint64 code> ne doit prendre que 8 octets. P>
Design note:
// At most 10 bytes are needed for 64-bit values. The encoding could
// be more dense: a full 64-bit value needs an extra byte just to hold bit 63.
// Instead, the msb of the previous byte could be used to hold bit 63 since we
// know there can't be more than 64 bits. This is a trivial improvement and
// would reduce the maximum encoding length to 9 bytes. However, it breaks the
// invariant that the msb is always the "continuation bit" and thus makes the
// format incompatible with a varint encoding for larger numbers (say 128-bit).
4 Réponses :
Mettez simplement: Oui, un type d'entier de taille fixe de 64 bits prendra toujours 8 octets. Ce serait une langue inhabituelle où ce n'est pas le cas. P>
Il existe des langues / plates-formes qui prennent en charge les types numériques de longueur variable où le stockage en mémoire est em> dépend de la valeur, mais vous ne spécifieriez pas le nombre de bits dans le type dans le type manière simple, comme cela peut varier. P>
La spécification de langue de programmation Go P>
Un type numérique représente des ensembles de valeurs entier ou à virgule flottante. Les types numériques indépendants d'architecture prédeclared sont les suivants: P>
uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615)
Selon http://golang.org/ref/spec#ssize_and_alignment_guaranties :
type size in bytes byte, uint8, int8 1 uint16, int16 2 uint32, int32, float32 4 uint64, int64, float64, complex64 8 complex128 16
Rappelez-vous simplement la règle simple, le type de variable est généralement optimisé pour s'adapter à certains espaces de mémoire et l'espace de mémoire minimum est 1 bit (s). Et 8 bits = 1 octet (s): p>
donc 64 bits = 8 octets (s) p>