一个字节如何比另一个字节更重要?

时间:2018-06-09 16:47:13

标签: endianness

little endian和big endian之间的区别向我解释如下:“在little endian中,最低有效字节进入低地址,而在big endian中,最高有效字节进入低地址”。究竟是什么让一个字节比另一个更重要?

2 个答案:

答案 0 :(得分:3)

在数字222中,您可以将前2个视为最重要的,因为它代表值200;第二个2不太重要,因为它代表值20;第三个2是最低有效数字,因为它代表值2。

因此,尽管数字相同,但它们所代表的数字的大小用于确定数字的重要性。

与将值四舍五入到有效数字(“S.F.”或“SF”)时相同:123.321至3SF为123,2SF为120,4SF为123.3。自从发明电子产品之前就已经使用过这个术语了。

答案 1 :(得分:1)

在任何位置数字系统中,每个数字在创建数字的整体值时具有不同的权重。

考虑数字51354(在基数10中):前5个比第二个5更重要,因为它代表5 乘以10000 ,而第二个5只是5 乘以10

在计算机中,数字通常是固定宽度的:例如,一个16位无符号整数可以被认为是一个正好是16个二进制数字的序列,最左边的一个明确地是最重要的(它值得确切地说是32768,超过数字中的任何其他位),最右边的最不重要(仅值一个)。

只要整数在CPU寄存器中,我们就不需要关心它们的表示 - CPU会根据需要愉快地对它们执行操作。但是当它们被保存到内存(通常是一些随机访问字节存储)时,它们需要以某种方式表示为字节。

如果我们考虑“普通”计算机,将一个数字(大于一个字节)表示为字节序列意味着基本上将其表示为基数256,每个字节是基数为256的数字,每个基数为256的数字更多或不太重要。

让我们看一个例子:将值54321作为16位整数。如果你用256写入它,它将是两个256位基数:数字0xD4 1 (值得0xD4乘以256)和数字0x31(值0x31乘以1) )。很明显,第一个比第二个更重要,因为最左边的“数字”确实比它右边的数字多256倍。

现在,小端机器会在内存中写入最不重要的数字,大端数字会反过来。

顺便提一下,二进制,十六进制和基数256之间存在良好的关系:4位直接映射到十六进制数字,2个十六进制数字直接映射到一个字节。因此,您还可以看到54321是二进制文件

1101010000110001 = 0xD431

可以直接分成两组,每组8位

11010100 00110001

是上面的0xD4和0x31。所以你也可以看到最重要的字节是包含最高有效位的字节。

  1. 这里我使用相应的十六进制值来表示每个base-256数字,因为没有好的方法来象征性地表示它们。我可以使用他们的ASCII字符值,但我0xD4在ASCII之外,而0x31是1,这只会增加混乱。