Java JVM中的Big-endian转换

Java JVM中的Big-endian转换,java,jvm,endianness,jvm-hotspot,Java,Jvm,Endianness,Jvm Hotspot,好的,java在内存中以big-endian格式存储INT。我的英特尔处理器使用little endian 转换发生在哪里?它发生了吗?JVM开发人员如何解决性能问题?在英特尔上运行的JVM将int存储为little endian。这里的“存储”是什么意思?您正在考虑DataInput/DataOutput?如果是这样,那只是IO的问题。它与内部数据表示没有任何联系,就像在将文本文件读入Java字符串时,文本文件是否为UTF-8一样重要;实现可以选择以它喜欢的任何格式存储。如果任何JVM在一台小

好的,java在内存中以big-endian格式存储INT。我的英特尔处理器使用little endian


转换发生在哪里?它发生了吗?JVM开发人员如何解决性能问题?

在英特尔上运行的JVM将
int
存储为little endian。

这里的“存储”是什么意思?您正在考虑
DataInput
/
DataOutput
?如果是这样,那只是IO的问题。它与内部数据表示没有任何联系,就像在将文本文件读入Java字符串时,文本文件是否为UTF-8一样重要;实现可以选择以它喜欢的任何格式存储。如果任何JVM在一台小端机器上存储int big-endian,那将是令人震惊的。PARF将是骇人听闻的。无关的,但您可能意味着AFAIK。另一个要考虑的是二进制I/O是如何处理的。查看java.nio.byteorder类我可以用你的答案再问一个小问题吗?如果JVM是little endian,那么位移位操作一定比看起来更复杂?@Oroboros102:不,Big endian vs little endian的故事是关于数据如何存储在内存或磁盘上的。但是算术是在CPU内部使用寄存器进行的。位移位操作的语义不会改变。@Oroboros102假设您的机器有32位寄存器,位移位可能会直接导致32位寄存器上的处理器指令,而不管体系结构如何。左移位总是将位移向更重要的位,而不考虑endianess。