计算机房大端小端,关于计算机科学:为什么使用小端和大端?

为什么在40年的二进制计算机科学之后,小尾数法和大尾数法仍然在使用?是否有算法或存储格式可以更好地与一个一起工作,而与另一个一起工作则更差?如果我们都换了一个,坚持下去,那不是更好吗?

你刚刚从我嘴里偷走了这些话。:)谢谢

如果我们没有从闪族语言中得到数字,我们也会是小尾数。

当添加两个数字(在纸上或机器中)时,从最低有效数字开始,朝最高有效数字前进。(许多其他操作也是如此)。

在Intel8088上,它有16位寄存器,但有一个8位数据总线,作为小endian,允许这样的指令在第一个内存周期后开始操作。(当然,一个单词的记忆提取应该可以按降序进行,而不是按升序进行,但我怀疑这会使设计稍微复杂一点。)

在大多数处理器上,总线宽度与寄存器宽度匹配,因此这不再具有优势。

另一方面,可以从MSB开始比较big endian数(尽管许多比较指令实际上执行了一个减法,但无论如何都需要从LSB开始)。符号位也很容易获得。

Are there algorithms or storage

formats that work better with one and

much worse with the other?

不,这里和那里都有小的优势,但没有什么大的优势。

实际上,我认为litte endian更自然和一致:bit的意义是2^(位_pos+8*字节_pos)。而对于big endian,位的意义是2^(位_pos+8*(字_大小-字节_pos-1))。

Wouldn't it be better if we all switched to one and stick with it?

由于x86的统治地位,我们肯定会被小endian所吸引。许多移动设备中的ARM芯片都具有可配置的端隙,但通常设置为le,以便与x86世界更兼容。我没意见。

别忘了,网络主要在比利时工作。

哇,我不知道每个字节的位也存储得最不重要。所以10=0x0A实际上存储为01010000,而不是二进制的00001010?在BE系统上也是这样吗?

@Krubo最小的可寻址单元是字节,所以它实际上是完全任意的,你如何考虑位的排列。字节中如何"存储"位完全取决于您要遵循的约定。如果你把你的选择惯例写在纸上,你会在小尾数中把10写成01010000,在大尾数中写成00001010。

小endian使类型转换更容易。例如,如果您有一个16位的数字,您可以简单地将相同的内存地址作为指向8位数字的指针,因为它包含最低的8位。因此,您不需要知道正在处理的确切数据类型(尽管在大多数情况下,您确实知道)。

big endian的可读性要高一些。位按照逻辑顺序(首先是最重要的值)存储在内存中,就像任何人类使用的数字系统一样。

在许多抽象层的时候,这些参数实际上不再重要了。我认为我们仍然拥有这两者的主要原因是没有人想转换。这两种系统都没有明显的原因,那么,如果旧系统工作得很好,为什么还要更改任何内容呢?

我不太喜欢你的打字评论。

在小尾数法系统中,最低有效位在内存中排在第一位。因此,可以将该内存指针视为8位值(将获得8个最低有效位)、16位值等。您将始终按照预期的顺序获得正确的位数。在big-endian系统中,您将得到最重要的位,这不是您在将较大的数据类型转换为较小的数据类型时所期望的。

排字通常是在寄存器中进行的,但是-否则你不能对extend等符号进行签名-除了重新解释,在这种情况下你是对的,但是在一些big endian机器上,指针指向一个单词的最后一个字节,而不是第一个字节,这只会加深所有的混乱。

小endian排字技巧只在缩小数据类型时有效,例如,将一个短字符转换为一个字符。为了扩大范围,如果强制转换为签名类型,显然需要额外的存储和签名扩展。

我认为他是指恢复记忆。无论这个数字有多大或有多小,CPU都不必移动到它在内存中的位置。如果它在寄存器或缓存中的CPU上,CPU将必须检索它,此时它可以重用上次使用的内存地址。但是,如果它是big-endian,那么就必须调整上次使用的内存地址。在任何一个系统中,CPU上的数据都必须重新检索。(缩短在CPU上具有与数据相同的优势,无论如何)。

这应该是公认的答案。小endian让我非常高兴,每当我做重新解释,因为我知道这个操作将没有任何开销。在big-endian系统中,无论多简单,跨大小的每一个转换都会花费您的成本。

大尾数法和小尾数法都有各自的优点和缺点。即使有一个明显的优越性(事实并非如此),任何遗留的体系结构都不可能切换到端节点,所以我担心您将不得不学习如何使用它。

我在找一些通用或特定的例子。

Little-Endian(通常,但不总是)对于内部滚动的bignum实现很有用(即,使用大于机器字大小的整数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值