variable type literal data create convert conversion c# types boolean byte bit

literal - type conversion c#



¿Por qué no es el tamaño de un tipo de datos bool solo 1 bit en C#? (3)

Solo estoy aprendiendo C # y profundizando en los tipos de datos.

¿Por qué un tipo de datos bool no es de 1 bit de tamaño?

Parece que solo puede contener uno de dos valores (verdadero o falso), por lo tanto, ¿no tomaría eso solo 1 bit de espacio para representar ese valor?

¿Es porque el tamaño ''direccionable'' más pequeño de un valor es un byte (8 bits) como se menciona en esta publicación ?

Mi objetivo general era visualizar lógicamente el tamaño diferente de cada tipo de datos en C #, por lo que estaba tratando de crear una lista de todos los tipos de datos y su tamaño de bit asignado y esto me lanzó.


¿Es porque el tamaño ''direccionable'' más pequeño de un valor es un byte?

Sí, exactamente lo mismo. Para que el CLR sea eficiente, asigna sus tipos de datos a los tipos de datos de la máquina nativa de la misma manera que lo hace el compilador en C ++ (más o menos).


Si desea almacenar muchas banderas de una manera eficiente en espacio, considere usar Int32 o Int64 como máscara de bits, de esta manera puede almacenar 32 o 64 banderas booleanas en un tipo de datos de 32/64 bits. Tiene que hacer pruebas de máscara de bits para verificar o establecer valores, por lo que hay un pequeño costo adicional para acceder o actualizar, sobre una variable booleana.

El tamaño de un campo booleano en la memoria es de 1 byte, y de una variable booleana es de 4 bytes.

BitArray también es útil para tratar con muchos indicadores de bits: http://msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx


También noté esto ... creé dos matrices: ¿flotar [4000] y flotar? [4000]. La segunda matriz ocupa el doble de espacio de memoria porque flotar? se implementa como un flotador y un bool, y el bool termina tomando 32 bits exactamente igual que el flotador.

Entonces, al final, si el uso de memoria es una preocupación, usar un valor flotante de NaN para representar "nulo" en un flotador [] es mejor que usar un flotador? [].

¡Me hace sentir como un idiota por todos los años que traté de usar tipos de datos más pequeños creyendo que en realidad estaba haciendo algo bueno! :-)