2010-07-09 1 views
5

Que diriez-vous d'un quartet etc.Existe-t-il un type de données .NET plus petit qu'un octet?

+1

BitOperations: http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps.aspx –

+0

@Shiftbit, lien très utile, merci. – Shimmy

+0

vous êtes les bienvenus. :) Ce n'est pas un type de données .NET mais il vous permettra de manipuler les bits dans un octet. Vous avez mentionné bools, vous pourriez également considérer cela utile: Bit Fields - http://en.wikipedia.org/wiki/Bit_field –

Répondre

14

Non. Même si vous avez un tableau de booléens, je crois qu'ils sont spécifiés pour prendre un octet chacun.

Bien sûr, vous pouvez définir vos propres types de données qui ont moins de 256 valeurs valides (comme le fait Boolean) mais vous ne pouvez pas le faire prendre moins d'un octet en mémoire. Comme LBushkin l'a souligné, il existe des types tels que BitArray et BitVector32 qui empaquetent efficacement plusieurs bits de manière efficace - vous pouvez écrire votre propre type NybbleArray si vous le souhaitez.

+0

Donc, si je veux définir un type de grignotage, je devrais le faire avec Byte, à droite, car il est encore mieux que le tableau de 4 booléens ... – Shimmy

+0

@Shimmy: Oui, c'est vrai. –

+0

Cette table est meilleure car elle vous indique la taille de chaque type, contrairement au premier :) http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy

1

Non, l'octet est le plus petit.

Cela peut être utile: How can you nibble (nybble) bytes in C#?

+0

Un booléen ne prend-il pas moins? – Shimmy

+0

Moins de mémoire? Moins de valeurs possibles? Oui. Si vous essayez d'implémenter un type Nibble alors la meilleure façon serait d'utiliser un BitArray/BitVector comme mentionné précédemment ou d'utiliser le bitmapping sur des octets. – Mandelbrot

4

Il n'y a pas de type de données natif plus petit que l'octet, si vous voulez stocker et manipuler un groupe de bits emballés, vous pouvez utiliser BitVector32 ou BitArray.

+0

Je pense que je vais utiliser un octet simple, car BitVector a une longueur de 4 octets (Int32) (au moins). – Shimmy

Questions connexes