-
分析流程图
// 传入8009 输出 [73, 31, 0, 0]
public static byte[] int2Byte(int number) {
int temp = number;
byte[] b = new byte[4];
for (int i = 0; i < b.length; i++) {
b[i] = new Integer(temp & 0xff).byteValue();
temp = temp >> 8; // 向右移8位
}
return b;
}
解释: 8009 二进制 0001 1111 0100 1001
,0xff 二进制1111 1111
,填充后0000 0000 1111 1111
第一步,传入8009,8009&0xff- > 保留低8位,即0100 1001
, new Integer(temp & 0xff).byteValue()的值为 73
第二步,8009右移8位,再&0xff,即0001 1111
, new Integer(temp & 0xff).byteValue()的值为 31
第三步,再右移8位,全为0,第四步一样全为0
原码反码补码这三个概念
- 对于正数(00000001)原码来说,首位表示符号位,反码 补码都是本身
- 对于负数(100000001)原码来说,反码是对原码除了符号位之外作取反运算即(111111110),补码是对反码作+1运算即(111111111)