集合(10-位数组)
来源:互联网 发布:华傲数据借贷产品 编辑:程序博客网 时间:2024/05/18 00:00
概念
如果需要处理很多位,就可以使用位数组。数组中每一位只能是0或1,即假或真。
BitArray的使用
BitArray是引用类型,长度是可以伸缩的,当不确定位的长度时可以使用。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace ConsoleApplication36{ class Program { static void Main(string[] args) { BitArray bits = new BitArray(8); bits.SetAll(true); bits.Set(1, false); bits[3] = false; Console.WriteLine("使用set和索引器:"); Console.WriteLine(Convert.ToString(bits)); Console.WriteLine("使用NOT取反:"); bits.Not(); Console.WriteLine(Convert.ToString(bits)); BitArray bits1 = new BitArray(new bool[] { true, true, false, false, true, true, false, false }); BitArray bits2 = new BitArray(new bool[] { true, false, false, true, true, true, false, false }); Console.WriteLine("\n执行bits1.And(bits2)前: \nbits1={0}\nbits2={1}", Convert.ToString(bits1), Convert.ToString(bits2)); Console.WriteLine("执行bits1.And(bits2)后: \nbits1={0}", Convert.ToString(bits1.And(bits2))); bits1 = new BitArray(new bool[] { true, true, false, false, true, true, false, false }); bits2 = new BitArray(new bool[] { true, false, false, true, true, true, false, false }); Console.WriteLine("\n执行bits1.Or(bits2)前: \nbits1={0}\nbits2={1}", Convert.ToString(bits1), Convert.ToString(bits2)); Console.WriteLine("执行bits1.Or(bits2)后: \nbits1={0}", Convert.ToString(bits1.Or(bits2))); bits1 = new BitArray(new bool[] { true, true, false, false, true, true, false, false }); bits2 = new BitArray(new bool[] { true, false, false, true, true, true, false, false }); Console.WriteLine("\n执行bits1.Xor(bits2)前: \nbits1={0}\nbits2={1}", Convert.ToString(bits1), Convert.ToString(bits2)); Console.WriteLine("执行bits1.Xor(bits2)后: \nbits1={0}", Convert.ToString(bits1.Xor(bits2))); } } public partial class Convert { public static string ToString(BitArray bits) { StringBuilder sb = new StringBuilder(); foreach (bool item in bits) { sb.Append(item ? 1 : 0); } return sb.ToString(); } }}
输出结果:
从代码可以看出:
1. 使用部分类partial,为Convert提供扩展方法,可以支持BitArray转string
2. BitArray类可以使用SetAll、Set、和索引器等进行位赋值
3. 位与运算And (两个同时为1时结果为1)
4. 位或运算Or(其中只要有一个为1结果就为1)
5. 位异或运算Xor(两个同时为1时结果为0)
BitVector32的使用
BitVector32是值类型,因此处理速度比BitArray快,但是长度固定为32位。
掩码
static void Main(string[] args) { Console.WriteLine("掩码的规律:"); Console.WriteLine("BitVector32.CreateMask():{0}",BitVector32.CreateMask()); Console.WriteLine("BitVector32.CreateMask(1):{0}", BitVector32.CreateMask(1)); Console.WriteLine("BitVector32.CreateMask(2):{0}", BitVector32.CreateMask(2)); Console.WriteLine("BitVector32.CreateMask(3):{0}", BitVector32.CreateMask(3)); Console.WriteLine("BitVector32.CreateMask(4):{0}", BitVector32.CreateMask(4)); Console.WriteLine("BitVector32.CreateMask(5):{0}", BitVector32.CreateMask(5)); Console.WriteLine("BitVector32.CreateMask(6):{0}", BitVector32.CreateMask(6)); Console.WriteLine("BitVector32.CreateMask(7):{0}", BitVector32.CreateMask(7)); Console.WriteLine("BitVector32.CreateMask(8):{0}", BitVector32.CreateMask(8)); }
输出结果:
可以看出,结果都是传递的参数*2
规律如下:
- 把10进制参数转换为2进制
- 2进制向左移一位,最后一位补0
- 得到二进制掩码,返回一个10进制
16进制 10进制 2进制转换
static void Main(string[] args) { Console.WriteLine("16进制:a"); int number = 0xa; Console.WriteLine("10进制:{0}",number); BitVector32 bits=new BitVector32(); bits[number]=true; Console.WriteLine("2进制:{0}", bits.ToString()); }
0 0
- 集合(10-位数组)
- algrothm_different(数组+集合)
- 用C语言数组实现位操作(位数组)
- 位运算(2)-- 集合中的位运算
- PHP数组(集合)与数组(集合)的操作
- 数组和集合(C#)
- OC-集合1(数组)
- PHP中的数组(集合)
- 数组和集合(一)
- 数组和集合(二)
- 数组和集合(三)
- 位数组
- 数组集合
- 数组集合
- 集合(集合转成数组)
- Bitset位集合容器
- bitset位集合容器
- bitset 位容器集合
- JavaScript 数据类型检测
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- java并发编程系列之Lock的使用
- Css 多行文本溢出隐藏...
- Architectures、Valid Architectures和Build Active Architecture Only
- 集合(10-位数组)
- linux下tomcat的shutdown命令杀不死进程
- 在linux环境下编译运行OpenCV程序的两种方法
- centos下Svn检出Win2008 SVN服务器上项目SSL handshake failed: SSL error: Key usage violation in certificate ha
- Python装饰器与面向切面编程
- SAP ABAP如何隐藏你写的程序代码
- AngularJS跳转刷新当前页面的问题
- java-继承
- Laravel5做权限管理