有什么实用的技巧可以记住大端和小端之间的区别吗?


13

我不是每天都处理大端和小端问题,因此我很难记住哪个是什么。

最近,我接受了采访,询问两者之间的区别。因为我不记得我决定“猜测”(毕竟有50%的机会),但我失败了。

那么,有没有广为人知的实用技巧可以记住大字节序和小字节序之间的区别?


10
我瘦今天开始是最好说明字节顺序是什么,说你永远记得轮是哪一种方式让你随时谷歌它
JK。

我也很难记住它,并且有太多令人困惑的mnemotechnic技巧。我唯一可靠的帮助是在Google上投放endianness拼写,以便获得Wikipedia文章
mouviciel 2012年

3
有趣的巧合-我今天才偶然发现此链接,它具有令人惊讶的相关性commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
Nevermind

@Nevermind我在第二段之后停止阅读该文章。“仅对编译器作者和必须处理映射到寄存器的内存的人员有意义”?除了那是一个可怕的花园路径语句外,这还意味着处理寄存器的代码是一种极端情况。尝试在没有设备驱动程序的情况下使用计算机。
dodgethesteamroller

Answers:


14

我一直认为它定义了错误的方式,这也是记住它的提示。作为非英语母语者,我认为“结束”与“开始”相反(尽管显然“结束”可以表示结束-结束或结束)。无论如何,我只记得“定义错误的方式” :)

  • 在大字节序中,最高有效(最大)字节在开头
  • 在小尾数法中,最低有效(最小)字节在开头

或者,指位字节序

  • 128 64 32 16 8 4 2 1是大尾数法,因为它以小尾数结尾。
  • 1 2 4 8 16 32 64 128是小尾数的,因为它以大尾数结尾。

即使单词endianness的通常用法是指单词中字节的排序方式,但其通用含义是指较大数据项表示形式中可单独寻址的子组件的顺序如Wikipedia中所述)。


5
啊,但开始了小端小人国(破解),它们的卵在小头所以它是正确的方式
JK。

4
-1:字节顺序是指单词中的字节,而不是字节中的位。
kdgregory 2012年

1
@kdgregory-最后,一个字会影响位编号。您是否尝试过跨不同字节序的位域结构?我同意答案是错误的。
mouviciel 2012年

@Kdgregory:根据Wikipedia的说法字节序是指较大数据项表示形式中可单独寻址的子组件的顺序。那是一般情况。还有位字节序的概念。您是对的,因为字节序最常见的用法是指一个单词中字节的排序方式,我的例子也没有反映出这一点。用常见情况替换了第一个示例。
Joonas Pulakka'4

2
@kdgregory:因为什么时候需要硬件的存在来证明CS理论观念?但是很好:8051具有位可寻址寄存器。Ada语言允许为数据类型表示(pdf)指定适当的位顺序。当然,在串行介质上的位传输顺序需要定义位的字节序。该事实通常使用“字节序”是指一种特殊情况(文字字节)并不能否定它的通用含义。
Joonas Pulakka'4

33

我自己的提示:

  • 大端优先 = 大端优先!(第一个字节(最低地址)是MSB)
  • 小端 =小端优先!(第一个字节(最低地址)是LSB)

3
是的,这就是我的想法:Big Endian“始于BIG端”,而Little Endian“始于Little端”。就像棒球棒一样,棒子有两个末端,一个很大,另一个很小。这实际上不是一个难的概念。
Shane Kilkelly '04年

6

记住这一点的最好方法是,文明的人民寻找多样性,因此吃鸡蛋的方式与订购数字的方式不同。我们先从大数字(大尾数)开始写十进制数字,而从小尾数(小尾数)开始吃水煮蛋。


1
这个答案大部分是非技术性的,但完全准确,让我发笑。做得好。

6

大端数字从“大端”开始。小端数字从“小端”开始。

根据《格列佛游记》,这两者都暗示着从哪里开始吃鸡蛋的问题。

在这种情况下,“结束”不是开始的对立面,它只是指(绳)的任何极值,因此它们不被称为“大结束语”或“小结束语”(肯定是与“开始”相反)。


确实。最简单(也是最有趣)的记忆方式就是去阅读格列佛游记。我保证您永远不会忘记哪一个!
2015年

您应该以粗体显示“开始吃饭”(也是72pt,<blink>),这确实是造成所有混乱的全部原因。
T Nierath '18

2

我最容易记住的方法是将单词“ endian”更改为“ startian”。大的startian整数从大端开始(例如,最高有效字节在前),而小的startian整数从小末端开始(例如,最低有效字节在前)。


可以随意将startian发音为/'stɑːr.ʃən//'stɑːr.ti.ən/(忽略/ r / 而不使用非rhotic口音)
dreamlax

这非常聪明,而且容易记住。
Coldblackice

1

我永远不记得哪个是“大端”和哪个“小端”,但是知道PowerPC和Intel x86处理器的字节顺序。Little与Intel的大部分字母相同,因此Intel x86是little-endian。

当然,仅当您知道PPC和x86的字节顺序时,这才有用。另一方面,您现在应该记住Intel x86 = little-endian。请记住,即使使用完全不同的指令集,x86和ARM也非常兼容。


1

我这样说:大就是美丽!

大==美丽==对。
正确的字节序是您可以在十六进制转储中读取的字节序,就像任何理智的人一样,它会将最高有效字节放在首位。

小==丑==错误。
这种顽固性产生的六进制转储是非常明显的错误,以至于您大喊“脑筋急转弯!”。也许这是外星人的可憎之举,我们只能推测这种暴行的起源。尽管如此,它仍然存在,并且我们一直坚持下去。

皮蒂(Pitty),并非总是能成为比赛的最佳变种...


Little == ugly == wrong... “即使是最小的人也可以改变未来的发展方向”-加拉德尔,LOTR
Coldblackice

-1

大端顺序:(升序)

从低到高

0 | 1 | 2 | 3 ^ ^开始结束

在little-Endian中:(降序)

高到低

3 | 2 | 1 | 0 ^ ^开始结束


1
这个问题要求一个实用的技巧来记住哪个。
gnasher729 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.