c#基础知识---集合之点阵列(BitArray)

2023-10-27

BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。

当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。

BitArray 类的方法和属性

下表列出了 BitArray 类的一些常用的 属性

属性 描述
Count 获取 BitArray 中包含的元素个数。
IsReadOnly 获取一个值,表示 BitArray 是否只读。
Item 获取或设置 BitArray 中指定位置的位的值。
Length 获取或设置 BitArray 中的元素个数。

下表列出了 BitArray 类的一些常用的 方法

序号 方法名 & 描述
1 public BitArray And( BitArray value ); 
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。
2 public bool Get( int index ); 
获取 BitArray 中指定位置的位的值。
3 public BitArray Not();
把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。
4 public BitArray Or( BitArray value ); 
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。
5 public void Set( int index, bool value ); 
把 BitArray 中指定位置的位设置为指定的值。
6 public void SetAll( bool value ); 
把 BitArray 中的所有位设置为指定的值。
7 public BitArray Xor( BitArray value ); 
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位异或操作。

实例

下面的实例演示了点阵列(BitArray)的使用:

using System;
using System.Collections;

namespace CollectionsApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建两个大小为 8 的点阵列
            BitArray ba1 = new BitArray(8);
            BitArray ba2 = new BitArray(8);
            byte[] a = { 60 };
            byte[] b = { 13 };
            
            // 把值 60 和 13 存储到点阵列中
            ba1 = new BitArray(a);
            ba2 = new BitArray(b);

            // ba1 的内容
            Console.WriteLine("Bit array ba1: 60");
            for (int i = 0; i < ba1.Count; i++)
            {
                Console.Write("{0, -6} ", ba1[i]);
            }
            Console.WriteLine();
            
            // ba2 的内容
            Console.WriteLine("Bit array ba2: 13");
            for (int i = 0; i < ba2.Count; i++)
            {
                Console.Write("{0, -6} ", ba2[i]);
            }
            Console.WriteLine();
           
            
            BitArray ba3 = new BitArray(8);
            ba3 = ba1.And(ba2);

            // ba3 的内容
            Console.WriteLine("Bit array ba3 after AND operation: 12");
            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();

            ba3 = ba1.Or(ba2);
            // ba3 的内容
            Console.WriteLine("Bit array ba3 after OR operation: 61");
            for (int i = 0; i < ba3.Count; i++)
            {
                Console.Write("{0, -6} ", ba3[i]);
            }
            Console.WriteLine();
            
            Console.ReadKey();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

Bit array ba1: 60 
False False True True True True False False 
Bit array ba2: 13
True False True True False False False False 
Bit array ba3 after AND operation: 12
False False True True False False False False 
Bit array ba3 after OR operation: 61
True False True True False False False False 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c#基础知识---集合之点阵列(BitArray) 的相关文章

随机推荐

  • 三个可替代“迅雷”的下载软件,速度超快!

    今天推荐可以替代迅雷的软件 那些你使用迅雷无法下载的资源 现在都可以下载了哦 1 qBittorrent 解压提供的安装包 然后双击 qbittorrent exe 找到你要下载的磁力链接 点击右上角 添加下载任务 设置你的下载路径 点击
  • K8S控制器Deployment

    简述 Deployment为Pod和ReplicaSet提供了一个声明式定义 declarative 方法 用来替代以前的ReplicationController来方便的管理应用 典型的应用场景包括 定义Deployment来创建Pod和
  • 关于搭建测试环境(详细)

    简述搭建测试环境 本人呢 是一名测试人员 以前工作的时候我们的测试环境都是网管 运维 帮我们管理的 顶多也就在tomcat下部署项目包 还是操作几个比较简单的指令 前不久就自己搭了套测试环境 然后也没事总结了一下 大致相同 可能存在个别差异
  • k8s lifecycle——poststart和prestop

    1 lifecycle的声明 lifecycle postStart exec command bin sh c sleep 100 preStop exec command bin sh c sleep 100 2 poststart 容
  • Nginx修改文件配置--配置本地网址

  • seata-server-1.5.2的环境搭建

    配置文件位置 使用的是nacos和mysql数据库 简单部署在Win10上 Linux上配置修改相同 启动命令不同 找到 seata server 1 5 2 seata conf目录下的application yml和applicatio
  • win10 vscode+clangd代码提示+cmake+mingw编译器和调试器

    win10 vscode clangd代码提示 cmake mingw编译器和调试器 前言 第一步 把cmake mingw llvm win64安装好 安装好vscode必备的插件 利用cmake构建一个项目 利用vscode的launc
  • 移动端VUE实现一周课程表

    效果图 点击课程弹出课程详情 代码 使用嵌套的v for循环去实现
  • m3u8文件中的 m3u8标签与属性说明

    EXTM3U 每个M3U文件第一行必须是这个tag 请标示作用 EXT X VERSION 3 该属性可以没有 EXT X MEDIA SEQUENCE 140651513 每一个media URI在PlayList中只有唯一的序号 相邻之
  • ubuntu18.04安装cuda、cudnn、pytorch-gpu

    cuda安装 参考博客 https blog csdn net mbdong article details 121926316 https mp weixin qq com s ZTzfC7xp8PVMvOONVIiK6g https b
  • Vue简单实例——Vuex代码实现

    简单介绍 上一篇我们介绍了Vuex的理论 这一章我们开始说明Vuex在代码方面的实现 基本使用 要想使用Vuex首先要进行下载 在下载的时候需要注意 如果你使用的vue2的框架 需要使用vuex的3版本 如果使用的是vue3的框架 才可以使
  • Open3D DbScanClustering聚类算法及聚类分簇可视化及存储

    DBSCAN聚类算法 是基于密度的聚类算法 该算法需要两个参数 labels np array pcd cluster dbscan eps 0 02 min points 10 print progress True 入参 eps 定义到
  • Java实体类与byte数组相互转换

    1 使用ByteArrayStream 和 ObjectStream public abstract class ByteConvert public byte getByte try ByteArrayOutputStream out n
  • Qt技巧:sqlite数据库 判断表是否存在

    m dbTest QSqlDatabase addDatabase QSQLITE m dbTest setDatabaseName sqlite db if m dbTest open qDebug lt lt database succ
  • Android安卓期末大作业 新闻app 实现注册登录增删改查功能

    Android安卓期末大作业 新闻app 文末附下载链接 app情况如下图所示 点我下载 https download csdn net download weixin 43474701 75953692
  • 泛微oa明细表添加按钮_关于E8,这些快捷方式你必须知道

    摘要 快捷方式不只是快 更能带来酣畅用户体验 本期场景为您带来E8快捷方式精选 看着那些大神们手指翻飞 在键盘上灵活起舞 说实话 你有过几分羡慕吗 快捷输入这东西 有时候真是少不了 虽然只是几秒几十秒的差异 但用户体验着实不同 试想 当你正
  • 基于OpenCV的数码管数字识别

    利用OpenCV可实现工业仪表设备的读数识别 仪表一般可分为两 数字式仪表和指针式仪表 本博文主要介绍一下数字式仪表识别的关键技术 下图是用软件模拟的数码管图片 本文识别的也就是图中的数字 一 图像定位 在实际的应用场景中 拍摄到的仪表区域
  • SparkStreaming与Kafka010之05之01 Consumer

    package Kafka010 import Kafka010 Utils MyKafkaUtils import org apache kafka clients consumer ConsumerRecord import org a
  • Java的Timer定时任务的一个小Demo

    今天遇到一个需求 需要读取数据库的地址 返回地址的经纬度和所属区县 但是由于数据库的地址信息会没有或者错误 那么我的循环就会停止 于是想到写一个定时任务来解决这个问题 下面是定时任务的一个小Demo 希望可以帮到需要的人 package e
  • c#基础知识---集合之点阵列(BitArray)

    BitArray 类管理一个紧凑型的位值数组 它使用布尔值来表示 其中 true 表示位是开启的 1 false 表示位是关闭的 0 当您需要存储位 但是事先不知道位数时 则使用点阵列 您可以使用整型索引从点阵列集合中访问各项 索引从零开始