取得单个bit位的值
比如,有一个字符串数组:String[] str1 = {"17","170","109","88","75","87","203","709"};
我要取得第二个数据的bit3的值,怎么做?
首先取得第二个数据,是170,再用除二取余法得到其二进制数:1010 1010
此时要取得bit(n)的值,根据位运算法则,只要右移n位再相与就可以了。
public static void getBit(int bit){
String a = str1[1];
System.out.println("父类str1的第二个数据是:"+a);
int b = Integer.parseInt(a); //**不能直接对Stringl类型做右移运算**,所以要把a强制转换为int型再右移
System.out.println("str1的第"+bit+"位是:");
System.out.println(b>>bit & 0x01);
//System.out.println(a>>bit & 0x01); 此行报错 Operator '>>' cannot be applied to 'java.lang.String', 'int'
}
取得多位bit的值
考虑以下场景,还是取得170这个数,但这次要获取它的bit3 ~ bit6的值。
public static void getBits(int bit1,int length){
String a = str1[1];
int b = Integer.parseInt(a);
int c = bit1+length-1;
System.out.println("str1的第"+bit1+"位"+"至第"+c+"位的值:");
System.out.println(b>>bit1 & 0xff>>(8-length));
// System.out.println(b>>bit1 & (0xff>>(bit2-bit1+1))); //length大于4时会出问题,此算法不可取
}