首页  

Java 位运算实例     所属分类 java 浏览量 828
byte 转 bit

public static String byteToBit(byte b) {        
    StringBuilder sb = new StringBuilder(8);
    sb.append((byte) ((b >> 7) & 0x1));
    sb.append((byte) ((b >> 6) & 0x1));
    sb.append((byte) ((b >> 5) & 0x1));
    sb.append((byte) ((b >> 4) & 0x1));
    sb.append((byte) ((b >> 3) & 0x1));
    sb.append((byte) ((b >> 2) & 0x1));
    sb.append((byte) ((b >> 1) & 0x1));
    sb.append((byte) ((b >> 0) & 0x1));
    return sb.toString();
}

public static String bytesToBit(byte[] bytes) { 
    if(bytes==null || bytes.length < =0) {
        return null;
    }
    StringBuilder sb = new StringBuilder(9*bytes.length);
    for(byte b:bytes) {
        sb.append(byteToBit(b)).append(" ");
    }
    return sb.toString();
}

b >> 1 右移一位,相当于除2
b & 0x1  位与  取最低位


System.out.println(bytesToBit("你好".getBytes(StandardCharsets.UTF_8)));

byte min = Byte.MIN_VALUE;
byte max = Byte.MAX_VALUE;
// -128 127
System.out.println(min +" "+max);

for(byte i=min;i < max;i++) {
    System.out.println(byteToBit(i)+" "+i);
}
System.out.println(byteToBit(max)+" "+max);
        
        
11100100 10111101 10100000 11100101 10100101 10111101 
-128 127
10000000 -128
10000001 -127
...
11111110 -2
11111111 -1
00000000 0
00000001 1
00000010 2
...
01111101 125
01111110 126
01111111 127

完整代码
https://gitee.com/dyyx/iview/blob/master/src/test/java/dyyx/ByteTest.java
    


java位运算

上一篇     下一篇
通配符和正则的区别

shiro实例

职场修炼心法

K8S简介

十六条实用的人生经验

dubbo 分布式追踪 traceId 传递要点