最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#集合之位數(shù)組的用法

 更新時(shí)間:2022年04月12日 10:06:39   作者:Ruby_Lu  
這篇文章介紹了C#集合之位數(shù)組的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

如果需要處理的數(shù)字有許多位,就可以使用BitArray類和BitVector32結(jié)構(gòu)。BitArray類位于System.Collection,BitVector32結(jié)構(gòu)位于System.Collection.Specialized。
這兩種類型最重要的區(qū)別是,BitArray類可以重新設(shè)置大小,如果事先不知道需要的位數(shù),就可以使用BitArray類。BitVector32結(jié)構(gòu)是基于棧的,因此比較快。BitVector32結(jié)構(gòu)僅包含32位,它們存儲(chǔ)在一個(gè)整數(shù)中。

1.BitArray類

BitArray類是一個(gè)引用類型,它包含一個(gè)int數(shù)組,其中每32位使用一個(gè)新整數(shù)。

示例:

    static void BitArrayDemo()
        {
          var bits1 = new BitArray(8);
          bits1.SetAll(true);
          bits1.Set(1, false);
          bits1[5] = false;
          bits1[7] = false;
          Console.Write("initialized: ");
          DisplayBits(bits1);
          Console.WriteLine();
           //int i =      Convert.ToInt32(bits1);


          DisplayBits(bits1);
          bits1.Not();
          Console.Write(" not ");
          DisplayBits(bits1);
          Console.WriteLine();

          var bits2 = new BitArray(bits1);
          bits2[0] = true;
          bits2[1] = false;
          bits2[4] = true;
          DisplayBits(bits1);
          Console.Write(" or ");
          DisplayBits(bits2);
          Console.Write(" : ");
          bits1.Or(bits2);
          DisplayBits(bits1);
          Console.WriteLine();


          DisplayBits(bits2);
          Console.Write(" and ");
          DisplayBits(bits1);
          Console.Write(" : ");
          bits2.And(bits1);
          DisplayBits(bits2);
          Console.WriteLine();

          DisplayBits(bits1);
          Console.Write(" xor ");
          DisplayBits(bits2);
          bits1.Xor(bits2);
          Console.Write(" : ");
          DisplayBits(bits1);
          Console.WriteLine();
        }
        
        static void DisplayBits(BitArray bits)
        {
          foreach (bool bit in bits)
          {
            Console.Write(bit ? 1 : 0);
          }
        }

2.BitVector32結(jié)構(gòu)

如果事先知道需要的位數(shù),就可以使用BitVector32結(jié)構(gòu)代替BitArry類。BitVector32結(jié)構(gòu)效率較高,因?yàn)樗且粋€(gè)值類型,在整數(shù)棧上存儲(chǔ)位。一個(gè)整數(shù)可以存儲(chǔ)32位。如果需要更多的位,可以使用多個(gè)BitVector32值或BitArray類。

    //對(duì)CreateMask方法的第一個(gè)調(diào)用來(lái)訪問第一位的一個(gè)掩碼
      //調(diào)用CreateMask后,bit1被設(shè)置為1。再次調(diào)用CreateMask方法,把第一個(gè)掩碼作為參數(shù)傳遞給CreateMask方法,返回來(lái)第二位的一個(gè)掩碼(是2)
      
      var bits1 = new BitVector32();
      int bit1 = BitVector32.CreateMask();     //1
      int bit2 = BitVector32.CreateMask(bit1); //2
      int bit3 = BitVector32.CreateMask(bit2); //4
      int bit4 = BitVector32.CreateMask(bit3); //8
      int bit5 = BitVector32.CreateMask(bit4); //16

      bits1[bit1] = true;
      bits1[bit2] = false;
      bits1[bit3] = true;
      bits1[bit4] = true;
      Console.WriteLine(bits1);

輸出:

    //除了用CreateMask方法創(chuàng)建掩碼之外,還可以自己定義掩碼,也可以一次設(shè)置多位。
    //十六進(jìn)制abcdef與二進(jìn)制1010 1011 1100 1101 1110 1111相同
    bits1[0xabcdef] = true;
    Console.WriteLine(bits1);

輸出:

    //也可以把32位分別放在不同的片段中
      bits1[0xabcdef] = true;
      Console.WriteLine(bits1);


      int received = 0x79abcdef;

      var bits2 = new BitVector32(received);
      Console.WriteLine(bits2);
      //創(chuàng)建6個(gè)片段。第一個(gè)片段需要12位,有16進(jìn)制0xfff定義。
      //第一次調(diào)用CreateSection方法直接受0xfff,為最前面的12位分配內(nèi)存。
      //第二次調(diào)用CreateSection方法,將第一個(gè)片段和偏移量傳遞
      BitVector32.Section sectionA = BitVector32.CreateSection(0xfff);
      BitVector32.Section sectionB = BitVector32.CreateSection(0xff, sectionA);
      BitVector32.Section sectionC = BitVector32.CreateSection(0xf, sectionB);
      BitVector32.Section sectionD = BitVector32.CreateSection(0x7, sectionC);
      BitVector32.Section sectionE = BitVector32.CreateSection(0x7, sectionD);
      BitVector32.Section sectionF = BitVector32.CreateSection(0x3, sectionE);
    //bits2[sectionA],把一個(gè)BitVector32.Section類型的值傳遞給BitVector32結(jié)構(gòu)的索引器,會(huì)返回一個(gè)int。IntToBinaryString方法將這個(gè)int表示
      Console.WriteLine("Section A: " + IntToBinaryString(bits2[sectionA], true));
      Console.WriteLine("Section B: " + IntToBinaryString(bits2[sectionB], true));
      Console.WriteLine("Section C: " + IntToBinaryString(bits2[sectionC], true));
      Console.WriteLine("Section D: " + IntToBinaryString(bits2[sectionD], true));
      Console.WriteLine("Section E: " + IntToBinaryString(bits2[sectionE], true));
      Console.WriteLine("Section F: " + IntToBinaryString(bits2[sectionF], true));

      
    static string IntToBinaryString(int bits, bool removeTrailingZero)
    {
      var sb = new StringBuilder(32);

      for (int i = 0; i < 32; i++)
      {
        if ((bits & 0x80000000) != 0)
        {
          sb.Append("1");
        }
        else
        {
          sb.Append("0");
        }
        bits = bits << 1;
      }
      string s = sb.ToString();
      if (removeTrailingZero)
        return s.TrimStart('0');
      else
        return s;
    }

輸出:

到此這篇關(guān)于C#集合之位數(shù)組的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#目錄和文件管理操作詳解

    C#目錄和文件管理操作詳解

    在C#中常用的目錄操作類有Directory,DirectoryInfo,下面這篇文章主要給大家介紹了關(guān)于C#目錄和文件管理操作的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • C#使用JArray和JObject封裝JSON對(duì)象

    C#使用JArray和JObject封裝JSON對(duì)象

    這篇文章介紹了C#使用JArray和JObject封裝JSON對(duì)象的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • unity shader實(shí)現(xiàn)玻璃折射效果

    unity shader實(shí)現(xiàn)玻璃折射效果

    這篇文章主要為大家詳細(xì)介紹了unity shader實(shí)現(xiàn)玻璃折射效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#數(shù)字圖象處理之圖像灰度化方法

    C#數(shù)字圖象處理之圖像灰度化方法

    這篇文章主要介紹了C#數(shù)字圖象處理之圖像灰度化方法,涉及C#基于Bitmap類操作圖像的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    這篇文章主要介紹了在C#?winform應(yīng)用程序中實(shí)現(xiàn)中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動(dòng)態(tài)設(shè)置控件字體和切換語(yǔ)言環(huán)境這四種方式,下面將詳細(xì)介紹每種方式及其具體實(shí)現(xiàn),并討論它們的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2024-04-04
  • C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法

    C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法,涉及C#編譯生成dll動(dòng)態(tài)鏈接庫(kù)文件的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • c#中task與thread的區(qū)別及使用講解

    c#中task與thread的區(qū)別及使用講解

    這篇文章主要介紹了c#中task與thread的區(qū)別及使用講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C#實(shí)現(xiàn)設(shè)置Excel表格中文本對(duì)齊方式和格式

    C#實(shí)現(xiàn)設(shè)置Excel表格中文本對(duì)齊方式和格式

    這篇文章主要為大家詳細(xì)介紹了如何在.NET 程序中通過(guò)C# 設(shè)置Excel單元格中文本的對(duì)齊方式,方向以及換行,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • 常用.NET工具(包括.NET可再發(fā)行包2.0)下載

    常用.NET工具(包括.NET可再發(fā)行包2.0)下載

    常用.NET工具(包括.NET可再發(fā)行包2.0)下載...
    2007-03-03
  • C# datagridview、datagrid、GridControl增加行號(hào)代碼解析

    C# datagridview、datagrid、GridControl增加行號(hào)代碼解析

    今天這篇文章小編就來(lái)給大家分享關(guān)于C# datagridview、datagrid、GridControl增加行號(hào)的介紹,主要包括WinForm中datagridview增加行號(hào)、WPF中datagrid增加行號(hào)、WPF dev控件GridControl增加行號(hào)三個(gè)內(nèi)容,感興趣等我小伙伴可以參考一下
    2021-10-10

最新評(píng)論

巴青县| 伊通| 小金县| 康保县| 武隆县| 如东县| 商河县| 吴堡县| 同德县| 吐鲁番市| 南丹县| 剑阁县| 潜江市| 敖汉旗| 德令哈市| 汽车| 清镇市| 丰县| 崇礼县| 白银市| 九江县| 衢州市| 彭水| 深圳市| 盘山县| 潮安县| 搜索| 光泽县| 湘潭县| 雅安市| 富川| 敖汉旗| 乌拉特后旗| 郓城县| 宁南县| 乌兰浩特市| 吉林省| 永嘉县| 龙井市| 扎兰屯市| 邵阳市|