[C#.NET][VB.NET] 二進位運算 BitVector32
1.BitVector32 結構是用來處理二進位運算
2.它將所有資料儲存成單一的32 bit整數
3.它提供Data屬性,以截取資料
如何使用 BitVector32 結構,進行位元處理
1.匯入命名空間
using System.Collections.Specialized;
2.引用BitVector32,傳入初始值0,以清除所有位元的值
//引用BitVector32,傳入初始值0,以清除所有位元的值
BitVector32 myBit = new BitVector32(0);
3.呼叫BitVector32.CreateMask方法,但不傳入任何參數,建立第一個位元的遮罩
//呼叫BitVector32.CreateMask方法,但不傳入任何參數,建立第一個位元的遮罩
int myBit1 = BitVector32.CreateMask();
4.再次呼叫BitVector32.CreateMask方法,並傳入上一個建立的遮罩
//再次呼叫BitVector32.CreateMask方法,並傳入上一個建立的遮罩
int myBit2 = BitVector32.CreateMask(myBit1);
int myBit3 = BitVector32.CreateMask(myBit2);
int myBit4 = BitVector32.CreateMask(myBit3);
int myBit5 = BitVector32.CreateMask(myBit4);
5.利用索引值將位元設為true
//利用索引值將位元設為true
myBit[myBit1] = true;
myBit[myBit4] = true;
6.輸出
//輸出
Console.WriteLine(myBit);
Console.WriteLine("結果={0}",myBit.Data);
輸出結果如下
如何使用 BitVector32 類別,做位元包裝Bit Packing
它可以讓你建立結構區段,用來儲存某個大小的數值,但一開始就必須建立這些區段,建立區段與建立遮罩的方法大致相同。
假設現在我有四個數值最大值分別是8,16,24,32。
1.匯入命名空間
using System.Collections.Specialized;
2.引用BitVector32,傳入初始值0,以清除所有位元的值
//引用BitVector32,傳入初始值0,以清除所有位元的值
BitVector32 myBit = new BitVector32(0);
3.引用BitVector32.Section結構,建立區段
//在BitVector32建立四個值最大值分別是8,16,24,32
//建立區段
BitVector32.Section mySect1 = BitVector32.CreateSection(8);
BitVector32.Section mySect2 = BitVector32.CreateSection(16, mySect1);
BitVector32.Section mySect3 = BitVector32.CreateSection(24, mySect2);
BitVector32.Section mySect4 = BitVector32.CreateSection(32, mySect3);
4.指定數值,指定的數值不能超過區段最大值
myBit[mySect1] = 7;//指定數值,指定的數值不能超過區段最大值
5.輸出
//輸出
Console.WriteLine("初始值 , 二進位 = {0} , 十進位 = {1}", myBit.ToString(), myBit.Data);
myBit[mySect1] = 7;//指定數值,指定的數值不能超過區段最大值
Console.WriteLine("第1段 , 二進位 = {0} , 十進位 = {1}", myBit.ToString(), myBit.Data);
myBit[mySect2] = 15;
Console.WriteLine("第2段 , 二進位 = {0} , 十進位 = {1}", myBit.ToString(), myBit.Data);
myBit[mySect3] = 24;
Console.WriteLine("第3段 , 二進位 = {0} , 十進位 = {1}", myBit.ToString(), myBit.Data);
myBit[mySect4] = 32;
Console.WriteLine("第4段 , 二進位 = {0} , 十進位 = {1}", myBit.ToString(), myBit.Data);
範例已包含VB與C#
範例下載:二進位運算BitVector32.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET