位数组(BitArray,BitVector32)
BitVector32结构效率高,位数不可变
BitArray效率低,位数可以变
========================================BitArray
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Collections;namespaceConsoleApplication2{classProgram{staticvoidMain(string[]args){//BitArray---位数组//And,Or,Xor两个BitArray对象的长度要相同BitArrayba1=newBitArray(8);//11110000BitArrayba2=newBitArray(8);//00000000ba1.SetAll(true);//设置数组类所有的值为trueba1.Set(4,false);//设置索引位置4处为trueba1.Set(5,false);ba1.Set(6,false);ba1.Set(7,false);//ba1.And(ba2);//逻辑与(&&)结果:00000000//ba1.Or(ba2);//逻辑或(||)结果:11110000ba1.Xor(ba2);//异或(^)结果:111110000DisplayBit(ba1);}staticvoidDisplayBit(BitArrayb){Console.WriteLine("数组长度:"+b.Count);foreach(booliteminb){Console.Write(item?1:0);}Console.ReadKey();}}}
========================================BitVector32
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Collections.Specialized;namespaceConsoleApplication2{classProgram{staticvoidMain(string[]args){//----------------使用掩码和索引器访问矢量中的位BitVector32bv=newBitVector32();//初始化32位的位(默认为0)intbit1=BitVector32.CreateMask();//值:1位数:1intbit2=BitVector32.CreateMask(bit1);//值:2位数:2intbit3=BitVector32.CreateMask(bit2);//值:4位数:3intbit4=BitVector32.CreateMask(bit3);//值:8位数:4intbit5=BitVector32.CreateMask(bit4);//值:16位数:5intbit6=BitVector32.CreateMask(bit5);//值:32位数:6intbit7=BitVector32.CreateMask(bit6);//值:64位数:7bv[bit7]=true;//设置第7位置位数为1Console.WriteLine(bv.Data);//输出int值Console.WriteLine(bv);//输出位数组//---------------位数组片段化BitVector32bv2=newBitVector32(0x79abcdef);BitVector32.Sectionsection1=BitVector32.CreateSection(0xfff);//12位BitVector32.Sectionsection2=BitVector32.CreateSection(0xff,section1);//接着8位BitVector32.Sectionsection3=BitVector32.CreateSection(0xff,section2);//接着8位BitVector32.Sectionsection4=BitVector32.CreateSection(0xf,section3);//接着4位Console.WriteLine(bv2);//01111001101010111100110111101111Console.WriteLine(Convert.ToString(bv2[section1],2));//110111101111Console.WriteLine(Convert.ToString(bv2[section2],2));//10111100Console.WriteLine(Convert.ToString(bv2[section3],2));//10011010Console.WriteLine(Convert.ToString(bv2[section4],2));//111Console.ReadKey();}}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。