有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java int,缩写为最重要的两个字节

我有一个整数

int a = //...

java中的int由4个字节组成。如果我们将它强制转换为short,我们将使用两个最低有效字节。获得由两个最重要的int组成的short的最快方法是什么

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

共 (2) 个答案

  1. # 1 楼答案

    short b = (short) (a >> 16);
    
  2. # 2 楼答案

    使用正确的位移位运算符(>>)就足够了。由于int原语数据类型的大小为32位(Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)),并且需要获得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语言有符号(<<>>)和无符号(<<<>>>)位移位运算符。请参阅文章:Bitwise and Bit Shift Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)

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

    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);
        }
    }