java(Bitmap算法)

package link;
/**
 * Bitmap算法
 * @author 
 *
 */
public class Sort7 {
	//每一个word是一个long 类型的元素,对应一个64 位二进制数据
	private long[] words;
	//BitMap的位数大小
	private int size;
	
	public Sort7(int size) {
		this.size=size;
		this.words=new long[(getWordIndex(size-1)+1)];
	}
	/**
	 * 判断BitMap的某一位的状态
	 */
	public boolean getBit(int bitIndex) {
		if(bitIndex<0||bitIndex>size-1) {
			throw new IndexOutOfBoundsException("超过Bitmap有效范围");
		}
		int wordIndex=getWordIndex(bitIndex);
		return (words[wordIndex]&(1L<<bitIndex))!=0;
	}
	/**
	 * 把Bitmap某一位设置为true
	 * @param bitIndex 位图的第bitIndex位 
	 */
	public void setBit(int bitIndex) {
		if(bitIndex<0||bitIndex>size-1) {
			throw new IndexOutOfBoundsException("超出BitMap的有效围");
		}
		int wordIndex=getWordIndex(bitIndex);
		words[wordIndex]|=(1L<<bitIndex);
	}
	/**
	 * 定位BitMap某一位所对应的我word
	 * @param bitIndex 位图的第bitIndex位
	 * @return
	 */
	 private int getWordIndex(int bitIndex) {
		 //向右移动6位,相当于除以64
		 return bitIndex>>6;
	 }
	 public static void main(String[] args) {
		Sort7 bitMap=new Sort7(128);
		bitMap.setBit(126);
		bitMap.setBit(75);
		System.out.println(bitMap.getBit(126));
		System.out.println(bitMap.getBit(78));
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值