Java是否以大尾数位顺序读取单个字节?

时间:2019-05-30 10:36:40

标签: java byte endianness

因此,我们可以讨论位顺序和字节顺序的字节序。 例如,当我从FileInputStream读取下一个字节时,我实际上得到了一个8位带符号整数,但是我不知道Java计算字节整数值的位顺序是什么。最高有效位或最低有效位在先?

(符号位,2 ^ 6 ..... 2 ^ 0) 要么... (2 ^ 0,..... 2 ^ 6,符号位)

2 个答案:

答案 0 :(得分:0)

int中的第一位是符号,其余位是值,最后一位是最低有效位。

答案 1 :(得分:0)

字节序仅在将一个单元分解为其他单元时才适用。因此,如果您通过位流传输一个字节,则可以观察到最低有效位是首先传输还是最后传输。到那时,我们可以说流是小端或大端的。

但是在字节可寻址的机器内,即字节是最小的存储单元的地方,字节内没有“字节序”。字节的任何位都不在该字节的任何其他位“之前”。

请注意,字节序的另一个术语是“字节顺序”。较大实体中的字节顺序。

是的,我们确实喜欢对位进行编号(对于一个8位字节,它是0到7),所以我们可以讨论它们,但这确实没有定义字节序,即使经常选择编号以匹配字节顺序也是如此。机器的;这是惯例。

关于FileInputStream-根据其文档,传输字节:字节的任何部分都没有发送到其他任何部分之前,至少就FileInputStream而言不发送。如果必须通过某个互连(例如SATA电缆)按位发送字节,则决定哪个位最先是硬件问题。较高层的代码以字节(甚至块)为单位。