Java int到short,包含两个最高有效字节

Java int到short,包含两个最高有效字节,java,int,short,Java,Int,Short,我有一个整数 int a = //... ints在java中由4个字节组成。如果我们将其强制转换为short,我们将使用两个最低有效字节。获取由int的两个最高有效字节组成的short的最快方法是什么 short b = //take two most significant bytes of a 使用正确的位移位运算符(>)就足够了。由于int原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移: public class Program { p

我有一个整数

int a = //...
int
s在java中由4个字节组成。如果我们将其强制转换为
short
,我们将使用两个最低有效字节。获取由
int
的两个最高有效
字节组成的
short
的最快方法是什么

short b = //take two most significant bytes of a

使用正确的位移位运算符(
>
)就足够了。由于
int
原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移:

public class Program {
    public static void main(final String[] args) {
        final int input = 0xABCDEFAB;
        final short output = (short) (input >> 16);
        System.out.printf("Original integer: %X%n", input);
        System.out.printf("Short with two most significant bytes: %X%n", output);
    }
}
另外,值得注意的是,Java语言有符号(
)和无符号(
)位移位运算符。请参阅以下文章:

使用除法运算符可以产生相同的结果:

public class Program {
    public static void main(final String[] args) {
        final int input = 0xABCDEFAB;
        final short output = (short) (input / 0x10000);
        System.out.printf("Original integer: %X%n", input);
        System.out.printf("Short with two most significant bytes: %X%n", output);
    }
}

使用正确的位移位运算符(
>
)就足够了。由于
int
原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移:

public class Program {
    public static void main(final String[] args) {
        final int input = 0xABCDEFAB;
        final short output = (short) (input >> 16);
        System.out.printf("Original integer: %X%n", input);
        System.out.printf("Short with two most significant bytes: %X%n", output);
    }
}
另外,值得注意的是,Java语言有符号(
)和无符号(
)位移位运算符。请参阅以下文章:

使用除法运算符可以产生相同的结果:

public class Program {
    public static void main(final String[] args) {
        final int input = 0xABCDEFAB;
        final short output = (short) (input / 0x10000);
        System.out.printf("Original integer: %X%n", input);
        System.out.printf("Short with two most significant bytes: %X%n", output);
    }
}
可能的重复。可能的重复。