目录
- 1 一个字节范围
- 2 >> 的含义
- 3 十进制的负数变成二进制
- 4 0x1 代表什么意思
- 5字节组转list
- 6 list转字节组
- 7 截取bytes
1 一个字节范围
1个字节,取值范围是-128~127.
正数的最大补码:01111111,即127.负数的最大补码10000000,原码为100000000,即进了一位变成了-128
代码语言:javascript复制01111111 为127
2 >> 的含义
代码语言:javascript复制是一个“有符号”右移位运算符;它会将运算符左边的运算对象向右移动运算符右侧指定的位数。 右移动之后,高位会自动补0 运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1
byte num = -128; 的二进制为 10000000
3 十进制的负数变成二进制
负数转换为二进制,就是将其相反数(正数)的补码的每一位变反(1变0,0变1)最后将变完了的数值加1,就完成了负数的补码运算。这样就变成了二进制。
代码语言:javascript复制11 >>2(11为int型)
1)、11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011
2)、把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。
3)、最终结果是0000 0000 0000 0000 0000 0000 0000 0010。
4)、转换为十进制是3。
4 0x1 代表什么意思
代码语言:javascript复制 byte nuy = 0x1;
String s1 = BitConverter.byteToBit(nuy );
System.out.println(s1);
值为 00000001
5字节组转list
代码语言:javascript复制 public static List<Byte> bytesToList(byte[] bytes) {
return Bytes.asList(bytes);
}
6 list转字节组
代码语言:javascript复制/**
* list转字节组
*
* @param list list
* @return byte[]
*/
public static byte[] listToBytes(List<Byte> list) {
return Bytes.toArray(list);
}
7 截取bytes
代码语言:javascript复制/**
* 截取bytes
*
* @param bytes 字节组
* @param from 起始位
* @param to 结束位
* @return bytes
*/
public static byte[] subBytes(byte[] bytes, int from, int to) {
return Arrays.copyOfRange(bytes, from, to);
}