Làm thế nào về một Nibble vvCó loại dữ liệu .NET nhỏ hơn byte không?
Trả lời
Không. Ngay cả khi bạn có một mảng Booleans, tôi tin rằng chúng được chỉ định để lấy một byte mỗi.
Tất nhiên bạn có thể xác định loại dữ liệu của riêng mình có ít hơn 256 giá trị hợp lệ (như Boolean
) nhưng bạn không thể làm cho nó chiếm ít hơn một byte trong bộ nhớ.
Như LBushkin đã chỉ ra, có các loại như BitArray
và BitVector32
có hiệu quả đóng gói nhiều bit hiệu quả - bạn có thể viết loại NybbleArray
của riêng mình nếu bạn muốn.
Vì vậy, nếu tôi muốn xác định một loại Nibble tôi nên làm điều đó với Byte, phải, vì nó vẫn còn tốt hơn mảng 4 booleans ... – Shimmy
@Shimmy: Vâng, đúng thế. –
Bảng này tốt hơn vì nó cho bạn biết kích thước của từng loại, không giống như kiểu đầu tiên :) http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy
Không, byte là nhỏ nhất.
này có thể hữu ích: How can you nibble (nybble) bytes in C#?
Không một boolean mất ít hơn? – Shimmy
Ít bộ nhớ hơn? Không. Có ít giá trị hơn? Vâng. Nếu bạn đang cố gắng thực hiện một kiểu Nibble thì cách tốt nhất là sử dụng một BitArray/BitVector như đã đề cập trước đó hoặc sử dụng bitmasking trên các byte. – Mandelbrot
Không có nguồn gốc dữ liệu kiểu nhỏ hơn byte, tuy nhiên nếu bạn muốn lưu trữ và vận dụng một nhóm các bit đóng gói, bạn có thể sử dụng BitVector32 hoặc BitArray.
Tôi nghĩ rằng tôi sẽ sử dụng Byte đơn giản, vì BitVector là 4 byte (Int32) chiều dài (ít nhất). – Shimmy
BitOperations: http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps.aspx –
@Shiftbit, liên kết rất hữu ích, cảm ơn. – Shimmy
bạn được chào đón. :) Nó không phải là một kiểu dữ liệu .NET nhưng nó sẽ cho phép bạn thao tác các bit trong một byte. Bạn đã đề cập đến bools, bạn cũng có thể xem xét điều này hữu ích: Bit Fields - http://en.wikipedia.org/wiki/Bit_field –