java简单的二进制位操作,取位数据,设置位数据

1.取高位的数据

例如一个字节 byte b=0xE7; 二进制为 11100111; 

要取出高三位 即“111”再转成int ,取为7;

/**
	 * 取一个字节的高几位bit
	 * @param b
	 * @param length
	 * @return
	 */
	public static int getLeftNum(byte b,int length) {
		return b>>(8-length);
	}

2.取低位的数据

需要取低几位,就先构建一个低几位全是1,其它位全是0的数据 ,即11111111往右移,然后保存需要的位数

例如,需要取低三位的,则把 11111111往右移8-3=5位,得到00000111

再用00000111&(与)原数据,则把原数据的前5位全置为0了

/**
	 * 取一个字节的低几位bit
	 * @param b
	 * @param length
	 * @return
	 */
	public static int getRightNum(byte b,int length) {
		byte mv=(byte) (0xff>>(8-length));
		return b&mv;
	}

 

3.取中间几位

先从高位的方向取,再从低位的方向取

/**
	 * 取中间几位,包括 startIndex位和endIndex位
	 * @param b
	 * @param startIndex
	 * @param endIndex
	 * @return
	 */
	public static int getMidNum(byte b,int startIndex,int endIndex) {
		byte i=(byte) getLeftNum(b,endIndex+1);//先取高几位
		return getRightNum(i,endIndex-startIndex+1);//再取低几位
		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值