BitArray trong C#

Khóa học lập trình C# nâng cao

5.0 (2 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 5 năm trước 28.389 lượt xem 8 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

BitArray trong C#

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về QUEUE TRONG C#. Hôm nay chúng ta sẽ cùng tìm hiểu về BitArray trong C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • BitArray là gì?
  • Một số thuộc tính và phương thức hỗ trợ sẵn trong BitArray.

BitArray là gì?

BitArray là một Collections giúp quản lý, lưu trữ một danh sách các bit (0 hoặc 1), được biểu diễn như kiểu Boolean (kiểu luận lý). Trong đó true biểu thị cho bit 1 false biểu thị cho bit 0.

Nó được sử dụng khi ta cần lưu trữ danh sách các bit mà chưa biết trước số lượng. Ta có thể truy cập đến các phần tử trong BitArray thông qua chỉ số như ArrayList.

Sẽ có bạn thắc mắc sao không dùng mảng các đối tượng kiểu bool mà lại dùng BitArray?

Thì câu trả lời là BitArray giúp tiết kiệm bộ nhớ hơn rất nhiều:

  • Mặc dù kiểu bool chỉ lưu 2 giá trị true hoặc false nhưng lại tốn đến 1 bytes cho mỗi biến kiểu bool.
  • Trong khi đó mỗi phần tử trong BitArray tốn đúng 1 bit để lưu trữ.

Trước khi sử dụng ta cần khởi tạo vùng nhớ bằng toán tử new.

Lưu ý: là ta không thể khởi tạo 1 BitArray rỗng!

Đầu tiên có thể khởi tạo BitArray và cho biết số phần tử ban đầu của BitArray:

Nếu bạn không muốn giá trị mặc định là false thì bạn có thể chỉ định giá trị mặc định thông qua constructor:

Có thể khởi tạo một BitArray từ một mảng bool có sẵn:

Hoặc khởi tạo một BitArray từ một mảng byte có sẵn:

Đối với trường hợp này ta có thể cách lưu trữ của nó như sau:

  • Đầu tiên ta đã biết 1 byte = 8 bits.
  • Khi đó trình biên dịch sẽ chuyển các số kiểu byte sang dạng 8 bits và lưu lần lượt vào BitArray. Như vậy trường hợp trên sẽ có 5 số kiểu byte tương đương với 40 bits sẽ được lưu vào BitArray.
  • Thử in giá trị các phần tử BitArray trên để kiểm chứng:

BitArray trong C#,Xor,SetAll

Để dễ nhìn thì cứ in được 8 bits thì mình sẽ xuống dòng. Bạn lưu ý đây chỉ là cách mình hiển thị lên màn hình thôi chứ bên trong vẫn là 1 mảng các bit duy nhất:

BitArray trong C#,Xor,SetAll

Gợi ý: Bạn có thể thử đổi các bit trên xem có giống 5 số kiểu byte ban đầu không nhé!

Tương tự bạn cũng có thể khởi tạo một BitArray từ một mảng các số nguyên int có sẵn:

Trường hợp này tương tự như trên nhưng lúc này kiểu int chiếm 4 bytes nên ta sẽ đổi 4 bytes = 32 bits. Và Trình biên dịch sẽ chuyển mỗi số nguyên int sang 32 bits và lưu vào ArrayList:

                BitArray trong C#,Xor,SetAll


Một số thuộc tính và phương thức hỗ trợ sẵn trong BitArray

Một số thuộc tính thông dụng trong BitArray:

  TÊN THUỘC TÍNH  

Ý NGHĨA

Count

  Trả về 1 số nguyên là số phần tử hiện có trong BitArray.

Length

  Trả về 1 số nguyên là số phần tử hiện có trong BitArray. 
  Đồng thời có thể thay đổi kích thước của BitArray bằng cách gán giá trị mới cho thuộc tính này.

Một số phương thức thông dụng trong BitArray:

TÊN PHƯƠNG THỨC

Ý NGHĨA

  And(BitArrayValue)

  Thực hiện phép toán AND bit giữa dãy bit hiện tại với dãy bit Value
và trả về 1 BitArray là kết quả của phép toán trên.

  Clone()

  Tạo 1 bản sao từ BitArray hiện tại.

  CopyTo(Array array, int Index)

  Thực hiện sao chép tất cả phần tử trong BitArray sang
  mảng một chiều array từ vị trí Index của array.

  Get(int Index)

  Trả về giá trị của bit tại vị trí Index trong BitArray.

  Not()

  Trả về 1 BitArray là kết quả của phép toán NOT trên dãy bit hiện tại.

  Or(BitArray Value)

  Trả về 1 BitArray là kết quả của phép toán OR giữa dãy bit hiện tại với dãy bit Value.

  Set(int Index, bool Value)

  Gán giá trị cho bit tại vị trí Index với giá trị mới là Value.

  SetAll(bool Value)

  Gán giá trị cho toàn bộ các bit trong BitArray với giá trị mới là Value.

  Xor(BitArray Value)

  Trả về 1 BitArray là kết quả của phép toán XOR giữa dãy bit hiện tại với dãy bit Value.

Lưu ý:

  • Các phép toán AND, OR, NOT, XOR đã được trình bày trong bài TOÁN TỬ TRONG C# các bạn có thể xem lại.
  • Các phép toán AND, OR, NOT, XOR phải được thực hiện trên 2 BitArray cùng độ dài nếu không sẽ báo lỗi.
  • Các phép toán AND, OR, NOT, XOR sẽ làm thay đổi cả BitArray gọi nó. Ví dụ:

Thì kết quả của phép AND sẽ được cập nhật giá trị vào BitArray A.


Một ví dụ đơn giản về sử dụng BitArray

Một chương trình đơn giản về BitArray:

Kết quả: khi chạy đoạn chương trình trên:

BitArray trong C#,Xor,SetAll

Các bạn có thể tự kiểm tra lại xem có đúng không nhé!


Kết luận

Nội dung bài này giúp các bạn nắm được:

  • BitArray là gì?
  • Một số thuộc tính và phương thức hỗ trợ sẵn trong BitArray.

Bài học sau chúng ta sẽ cùng tìm hiểu về GENERIC TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học BitArray trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Khóa học lập trình C# nâng cao

Bạn đã học hết các khoá học về C# CƠ BẢN, LẬP TRÌNH WINFORM thậm chí là LẬP TRÌNH WPF nhưng vẫn bối rối trước những hướng dẫn về CÁC PROJECT THỰC TẾ của Kteam?

Hoặc bạn nghe nói mãi về .NET nhưng vẫn thắc mắc nó có gì hay ho bên trong đó?

Hay đơn giản bạn viết muốn 1 đoạn code cực kỳ nguy hiểm khiến người khác khi nhìn vào phải thốt lên: “Ồ!!!......... Trẻ trâu…”

Khoá học lần này sẽ giúp bạn giải đáp những thắc mắc trên. Chào mừng các bạn đã đến với khoá học Lập trình C# nâng cao của Kteam.

Đánh giá

Stick1337 đã đánh giá 4 năm trước

kten987 đã đánh giá 5 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Vo Tan Duc đã bình luận 2 năm trước

Anh Long cho em hỏi: Trong thực tế có những trường hợp nào sử dụng Bit Array anh? Cảm ơn anh

Le Rachitique đã bình luận 4 năm trước

mình thấy khi khởi tạo BitArray từ 1 mảng byte, các bit trong 1 byte sẽ bị đảo ngược lại, khi CopyTo 1 BitArray sang 1 mảng byte cũng thế, admin có thể giải thích giúp mình tại sao lại như vậy không.

thanhdoanyura đã bình luận 7 năm trước

Em nghĩ chỉ cần dùng BitArray XorBit = MyBA6.Clone()  được rồi, cần gì phải " as BitArray" nữa ạ ?

thanhdoanyura đã bình luận 7 năm trước

Anh giải thích giúp em cái hàm "PrintBits" với

tuananhnguyenasp đã bình luận 7 năm trước

Cái ví dụ cuối thiếu cái function "PrintBits" rồi Admin ơi.

Không có video.