kotlin中的位运算符实现二进制转换Byte转bit

185 阅读1分钟

在计算机中,把 8 位聚在一起的二进制数称为一个字节byte,即 1 字节Byte = 8 bit。字节是计算机中表示数据大小的基本单位。通常字节byte用大写字母 B 表示,**位(bit)**用小写字母 b 表示

单位换算:
1 byte = 8bit
2 byte = 16bit

例如:16 位二进制数就是2字节(2B),32 位二进制数就是 4 字节(4B)(见图 1)。

image.png

位移(>>)计算

 
public static String byteToBit(byte b){
    return "" + (byte) ((b >> 7) & 0x1) +
                (byte) ((b >> 6) & 0x1) +
                (byte) ((b >> 5) & 0x1) +
                (byte) ((b >> 4) & 0x1) +
                (byte) ((b >> 3) & 0x1) +
                (byte) ((b >> 2) & 0x1) +
                (byte) ((b >> 1) & 0x1) +
                (byte) ((b >> 0) & 0x1);
}  

原理

第一位:

image.png

第二位:

image.png

以些类推,计算出bit0 ~ bit7的值。

上述是右移与0x01得到的,还有左移与0x80是一样的

java

(state << 4 & 0x80) == 0x80

kotlin

(DataUtil.bytes2Int(state).shl(4)) and 0x80 == 0x80