我有一個整數int到short具有兩個最顯著字節
int a = //...
int
S IN的java包括4個字節。如果我們將其轉換爲short
,我們將採用兩個最低有效字節。 short
由int
的2個最重要的byte
組成的最快方式是什麼?
short b = //take two most significant bytes of a
我有一個整數int到short具有兩個最顯著字節
int a = //...
int
S IN的java包括4個字節。如果我們將其轉換爲short
,我們將採用兩個最低有效字節。 short
由int
的2個最重要的byte
組成的最快方式是什麼?
short b = //take two most significant bytes of a
short b = (short) (a >> 16);
就足夠了使用右位移位運算符(>>
)。由於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);
}
}
的可能的複製(https://stackoverflow.com/questions/28876549/ [如何從Java int的獲得最顯著n位]如何對獲得大最顯著正位,從-INT-中的Java)。 –