Ruby 最低有效位优先

Ruby 最低有效位优先,ruby,computer-science,Ruby,Computer Science,在研究ruby时,我遇到了 > "cc".unpack('b8B8') => ["11000110", "01100011"] 然后我试着用谷歌搜索“最低有效位”的好答案,但找不到任何好答案 任何人都愿意向我解释或指出一个方向,让我能够理解“LSB优先”和“MSB优先”之间的区别。这与位的方向有关。请注意,在本例中,它解压了两个ascii“c”字符,但这些位是彼此的镜像。LSB表示最右边(最低有效)位是第一位。MSB表示最左边(最高有效位)是第一位 作为一个简单的例子,考虑数字

在研究ruby时,我遇到了

> "cc".unpack('b8B8')
 => ["11000110", "01100011"] 
然后我试着用谷歌搜索“最低有效位”的好答案,但找不到任何好答案


任何人都愿意向我解释或指出一个方向,让我能够理解“LSB优先”和“MSB优先”之间的区别。这与位的方向有关。请注意,在本例中,它解压了两个ascii“c”字符,但这些位是彼此的镜像。LSB表示最右边(最低有效)位是第一位。MSB表示最左边(最高有效位)是第一位

作为一个简单的例子,考虑数字5,它在“正常”(可读)二进制中看起来是这样的:

00000101
最低有效位是最右边的
1
,因为这是
2^0
位置(或仅是计划1)。它不会对值产生太大的影响。它旁边的一个是
2^1
位置(在本例中仅为纯0),这一点更为重要。其左边的位(
2^2
或只是普通的4)更为重要。所以我们说这是MSB符号,因为最高有效位(
2^7
)位于第一位。如果我们将其更改为LSB,它只会变成:

10100000
简单,对吗


(是的,对于所有的硬件大师们来说,我知道这取决于endianness的不同,从一种架构到另一种架构,但这是一个简单问题的简单答案)

谢谢。简单问题的简单答案。我读了这个关于big-endian和high-endian的链接。我认为只有当我们谈论多字节时,启用才有可能。endianness在单个字节中也起作用吗?@Nick:事实上不是。只有多字节,这就是我所指的。因为这是一个单字节,所以我认为没有必要陷入这种混乱。@ChrisEberle你说“LSB意味着最右边(最低有效)的位是第一位。”但是如果最右边的位是最低有效的,那不就是最左边的位是最高有效位,使它成为MSB,而不是LSB吗?你的例子是正确的,但是关于LSB的第一句话让我很困惑。