Как насчет прогиба и т. Д.Есть ли тип данных .NET меньше байта?
ответ
Нет. Даже если у вас есть массив булевых элементов, я считаю, что они указаны для каждого байта каждый.
Конечно, вы можете определить свои собственные типы данных, которые имеют менее 256 допустимых значений (например, Boolean
), но вы не можете заставить его занимать меньше байта в памяти.
Как LBushkin отметил, существуют такие типы, как BitArray
и BitVector32
, которые эффективно упаковать несколько битов эффективно - вы можете написать свой собственный NybbleArray
тип, если вы хотите.
Итак, если бы я хотел определить тип Nibble, я должен сделать это с помощью Byte, так как он все еще лучше, чем массив из 4 булевых ... – Shimmy
@Shimmy: Да, это так. –
Эта таблица лучше, так как она сообщает вам размер каждого типа, в отличие от первого: http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy
Нет, байт является наименьшим.
Это может быть полезно: How can you nibble (nybble) bytes in C#?
Не булевы меньше? – Shimmy
Меньше памяти? Нет. Меньше возможных значений? Да. Если вы пытаетесь реализовать тип Nibble, лучшим способом было бы использовать BitArray/BitVector, как ранее упоминалось, или использовать битмаскирование в байтах. – Mandelbrot
Там нет родного типа данных меньше байт, однако, если вы хотите хранить и обрабатывать группу упакованных бит, вы можете использовать BitVector32 или BitArray.
Я думаю, что я буду использовать простой байт, поскольку битвектор имеет длину 4 байта (Int32) (по крайней мере). – Shimmy
BitOperations: http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps.aspx – 2010-07-09 14:45:53
@Shiftbit, очень полезная ссылка, спасибо. – Shimmy
вы приветствуете. :) Его не тип данных .NET, но он позволит вам манипулировать битами в байте. Вы упомянули bools, вы также можете подумать об этом как полезное: Bit Fields - http://en.wikipedia.org/wiki/Bit_field – 2010-07-10 22:10:25