Assembly 为什么位从右向左编号?

Assembly 为什么位从右向左编号?,assembly,computer-science,computer-architecture,bits,Assembly,Computer Science,Computer Architecture,Bits,在计算机组织、计算机体系结构中,为什么位从右向左编号。那么,为什么十进制数从右向左编号呢?我们的系统就是这样发展起来的。它本可以走另一条路,同样简单…位不是从右到左编号的。它们的编号从最低权重(根据所选约定获得数字0或1的最低权重位)到最高权重(可以是15或16、31或32、63或64…) 以这种方式对它们进行编号的一个原因是,计数为2n(在start-at-0约定中)的位数n将始终相同。如果它们在另一个方向上编号,则不能仅从n推断位n的权重,它还取决于所讨论的字的宽度 另一个原因是,数字越小,

在计算机组织、计算机体系结构中,为什么位从右向左编号。

那么,为什么十进制数从右向左编号呢?我们的系统就是这样发展起来的。它本可以走另一条路,同样简单…

位不是从右到左编号的。它们的编号从最低权重(根据所选约定获得数字0或1的最低权重位)到最高权重(可以是15或16、31或32、63或64…)

以这种方式对它们进行编号的一个原因是,计数为2n(在start-at-0约定中)的位数n将始终相同。如果它们在另一个方向上编号,则不能仅从n推断位n的权重,它还取决于所讨论的字的宽度

另一个原因是,数字越小,重量越轻,这是非常直观的


它们在写入时从右到左编号,因为它们是从左侧的最高权重写入右侧的最低权重。数世纪以来,数字就是这样写的。如果这就是你想知道的,那么原因可能已经丢失了,但可能仍有线索。

它和其他数字一样:右边的值越低。它只是改变了基数。

一些处理器从msb位先到lsbit对位进行编号,从lsbit到msbit对位进行编号,与endianness无关,只是这些公司决定如何进行编号。这是一个武断的决定,只要每个使用该产品的人都坚持一个惯例,它在大计划中并不重要。在某些情况下,位设置和移位指令是根据芯片设计人员的惯例操作的,如果不是每个人都使用该惯例,那么您就有问题了。它也变得非常难看,例如,当使用powerpc核心的fpga时,它的msbit值为0,但如果使用verilog,则自然惯例是lsbit优先,因此您不必弄乱总线和/或在处理器核心周围创建边界,在该边界中,您可以切换所有内容,使其直接连接到公共外围设备,以另一种方式编号的等


简短的回答是“因为这是设计师的选择”,这是武断的。

请阅读关于Little Endian和Big Endian的文章。维基百科将比这里的任何人都能在几个段落中更好地回答这一问题。维基百科并没有本质上的编号,也不会自然地从一个“面”转到另一个“面”。这就是说,一种常见的约定是写入右边有最低有效位的整数的位(这与我们通常写入数字的方式相匹配),然后将该位编号为第零位(通过位表示的权重对其进行编号)。不过,没有规定必须这样做,而且还使用了不同的顺序/编号方案。谢谢你的评论harold!IBM的文档(至少对于Power ISA)使用大端位编号。在我看来,这是令人困惑的,因为(正如您所指出的)即使对于32位寄存器,最低有效位也是63位。