2010-07-09 7 views
5

Come su un Nibble ecc.Esiste un tipo di dati .NET più piccolo di un byte?

+1

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

+0

@Shiftbit, collegamento molto utile, grazie. – Shimmy

+0

siete i benvenuti. :) Non è un tipo di dati .NET ma ti permetterà di manipolare i bit all'interno di un byte. Hai menzionato bool, potresti anche considerare utile questo: Bit Fields - http://en.wikipedia.org/wiki/Bit_field –

risposta

14

No. Anche se si dispone di un array di booleani, credo che siano specificati per assorbire un byte ciascuno.

Ovviamente è possibile definire i propri tipi di dati che hanno meno di 256 valori validi (come fa Boolean) ma non è possibile farlo occupare meno di un byte in memoria.

Come LBushkin ha sottolineato, ci sono tipi come BitArray e BitVector32 che imballare in modo efficace più bit in modo efficiente - si potrebbe scrivere il proprio NybbleArray tipo se si voleva.

+0

Quindi se volessi definire un tipo di Nibble dovrei farlo con Byte, giusto, visto che è ancora meglio di un array di 4 booleans ... – Shimmy

+0

@Shimmy: Sì, è vero. –

+0

Questa tabella è migliore poiché ti dice la dimensione di ogni tipo, a differenza del primo :) http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy

1

No, il byte è il più piccolo.

Questo può essere utile: How can you nibble (nybble) bytes in C#?

+0

Non un booleano richiede meno? – Shimmy

+0

Meno memoria? No. Meno valori possibili? Sì. Se si sta tentando di implementare un tipo Nibble, il modo migliore sarebbe utilizzare un oggetto BitArray/BitVector come accennato in precedenza o utilizzare bitmasking su byte. – Mandelbrot

4

Non c'è nativa di dati di tipo più piccolo di byte, se si desidera memorizzare e manipolare un gruppo di bit imballati, è possibile utilizzare BitVector32 o BitArray.

+0

Penso che userò il Byte semplice, dato che BitVector ha una lunghezza di 4 byte (Int32) (almeno). – Shimmy

Problemi correlati