- 二进制的正负数 .
HEX (十六进制) EA EA
Oct(十进制) 有符号 无符号
-22 234
Bin (二进制) 1110 1010 11101010
备注:有符号数
正数 源码,反码,补码都一致
负数 详解见下,例如 :11101010
1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | ||
符号位(不参与取反与+1行为) | |||||||||
1)取反 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 得到反码 |
2)+1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 得到补码 |
1(代表负数) | -22 |
- java byte与16进制字符串相互转化
Hex String --> Byte
//1 Hex String --> Integer //2 Integer --> Byte public Byte convertFromHexString2Byte(String hexStr){ Integer i = Integer.parseInt(hexStr,16); Byte b = i.byteValue(); }
Byte -->Hex String
//1 Byte -- >Integer //2 Integer --> String public static String fromByte2HexString(Byte b){ Integer i = b.intValue(); String s = Integer.toHexString(i); return s; }
一个byte占用8位,一个HEX字符用4位表示 ===>1个byte 代表 2个HEX字符===>
[] [] [] [] [] [] [] []
高4位 低4位
H L
- byte类型取值范围(byte 占8位,有符号 -128 --- 127 )
推理
含义 | ||||||||||
最大正数 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ==>127 | 20 +21+….+28-1 =28 -1 =127 |
最大负数 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ===>128 | -27 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 反码 | ||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 补码 | |
取值范围
byte | 1 字节 | 8bit | -2(7)---2(8)-1 | 有符号 -2n-1 --- 2n-1 -1 |
short | 2字节 | 16bit | -215 -215-1 | 同上 |
int | 4字节 | 32bit | 同上
| |
long | 8字节 | 64bit | 同上
| |
char | 2字节 | 16bit | 0--216-1 | 无符号 0—2N-1 |
- byte ==》 HEX String 转化
public static String byte2HexString(byte[] b){ String ref = ""; for(int i=0; i<b.length;i++){ /*
Integer.toHexString(b[i]&0xFF);
作用是 int(十进制 有符号) ===> String(十六进制)
b[i]&0xFF 作用是 将byte转换为int类型
byte 8 位 int 32位 byte转int 位数不够需要补位 补位有偏差故需要清零高24位 即&0xFF*/
String hex = Integer.toHexString(b[i]&0xFF); if(hex.length()==1){ hex='0'+hex; } ref+=hex.toUpperCase(); } return ref; } /* FF 十六进制 1111 1111 二进制 -1 有符号 十进制 255 无符号 */
- 与关系
两边都成立才可以为真
1&1 --》1
1&0 --》0
0&1--》0
0&0 --》0
清零 ==》 &0
置为1 == 》&1
byte b = 24;
int i = b&0xFF; //清零高24位