java 实现 bitarry_Java实现一个简单的BitArray

本文介绍了一个Java实现的BitArray类,该类通过int数组存储位数据,支持高效地设置和获取位。BitArray类包含构造函数、getBit和setBit方法,以及检查长度合法性的逻辑,适用于存储大量布尔值场景。
摘要由CSDN通过智能技术生成

import java.lang.IllegalArgumentException;

public class BitArray {

private int[] bits = null;

private int length;

private final static int[] bitValue = {

0x80000000,

0x40000000,

0x20000000,

0x10000000,

0x08000000,

0x04000000,

0x02000000,

0x01000000,

0x00800000,

0x00400000,

0x00200000,

0x00100000,

0x00080000,

0x00040000,

0x00020000,

0x00010000,

0x00008000,

0x00004000,

0x00002000,

0x00001000,

0x00000800,

0x00000400,

0x00000200,

0x00000100,

0x00000080,

0x00000040,

0x00000020,

0x00000010,

0x00000008,

0x00000004,

0x00000002,

0x00000001

};

public BitArray(int length){

if(length<0){

throw new IllegalArgumentException("length must be above zero!");

}

bits = new int[length/32+((length%32)>0?1:0)];

this.length = length;

}

public int getBit(int index){

if(index<0 || index>length) {

throw new IllegalArgumentException("length value illegal!");

}

int intData=bits[index/32];

return ((intData & bitValue[index%32])>>>(32-index%32-1));

}

public void setBit(int index,int value) {

if(index<0||index>length) {

throw new IllegalArgumentException("length value illegal!");

}

if(value!=1&&value!=0){

throw new IllegalArgumentException("value must be 1 or 0!");

}

int intData = bits[index/32];

if(value==1) {

bits[index/32] = intData | bitValue[index%32];

}else{

bits[index/32] = intData & ~bitValue[index%32];

}

}

public int getLength() {

return length;

}

public static void main(String[] args){

BitArray bitArray = new BitArray(100000);

bitArray.setBit(100,1);

System.out.println(bitArray.getBit(100));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值