【问题标题】:int to short with two most significant bytesint 短于两个最高有效字节
【发布时间】:2017-08-12 12:45:50
【问题描述】:

我有一个整数

int a = //...

ints 在 java 中由 4 个字节组成。如果我们将其转换为short,我们将占用两个最低有效字节。获得shortint 中的两个最重要的bytes 组成的最快方法是什么?

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

【问题讨论】:

标签: java int short


【解决方案1】:
short b = (short) (a >> 16);

【讨论】:

    【解决方案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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      相关资源
      最近更新 更多