java中怎么将一个int转成高位在前的byte

如题所述

一个byte是8位,一个int是16位,int转换成byte是将前(左)8位舍弃,留后8位。
88+68=156,转换成int型2进制为0000000010011100,再强转成byte就是10011100,因为最高位为符号位,也就是表示正负的位,
所以这里的1代表负数,剩下的按照原码、补码的规则换算回来就是100,所以是-100!
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-23
1111111111111111111111111111111111111111111111111111111110110011
先知道是有符号位,最高位是符号位
byte是一个字节
8位
10110011
有符号位电脑计算使用补码

所以这里的10110011是补码
讲补码转化为原码
-1取反
-1:10110010
取反:11001101
-77
int
4个字节
32位
1000
0000
0000
0000
0000
0000
01001101(原码)
取反
1111
1111
1111
1111
1111
1111
10110010
加1
1111
1111
1111
1111
1111
1111
10110011(补码)
计算机运算使用的
第2个回答  2018-03-21
import java.text.ParseException;
import java.util.Arrays;
public class Test {
public static void main(String[] args) throws ParseException {
int n=0x10080402;
System.out.println(Arrays.toString(toBigEndian(n)));
}
static public byte[] toBigEndian(int n){
return new byte[] {
(byte)(n>>>24&0xff), (byte)(n>>>16&0xff),
(byte)(n>>>8&0xff), (byte)(n&0xff)
};
}
}

[16, 8, 4, 2]

相似回答