2010-07-09 8 views
5

Làm thế nào về một Nibble vvCó loại dữ liệu .NET nhỏ hơn byte không?

+1

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

+0

@Shiftbit, liên kết rất hữu ích, cảm ơn. – Shimmy

+0

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 –

Trả lời

14

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ư BitArrayBitVector32 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.

+0

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

+0

@Shimmy: Vâng, đúng thế. –

+0

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

1

Không, byte là nhỏ nhất.

này có thể hữu ích: How can you nibble (nybble) bytes in C#?

+0

Không một boolean mất ít hơn? – Shimmy

+0

Í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

4

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.

+0

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