0

所以我正在读一本关于如何将二进制位转换为八进制数的书。当试图解释这个概念时,他们给出了这个等式

N= S(...((d8)2^8+(d7)2^7+(d6)2^6)+((d5)2^5+(d4)2^4+(d3)2^ 3)+((d2)2^2+(d1)2^1+d0))

或者

N= S(...((d8)2^2 +(d7)2+(d6))2^6 + ((d5)2^2 +(d4)2^1 + (d3))2^3 + ((d2)2^2+(d1)2^1+d0))

d 表示在位中找到的数字,例如,如果最低有效位为 1,则 (d0) 将为 1。

我理解所有这些,但他们进一步详细说明括号表达式 ((d8)2^2 +(d7)2+(d6)) 是基数 8 位的系数,N=S((d2)8^2+ (d1)*8+(d0))。

有人可以解释括号中的表达式是 base8 数字的系数是什么意思吗?

4

1 回答 1

2

数字d i是数字的二进制数字。我们可以从它的二进制数字中计算出这个数字,如下所示:

    n = ∑ i 2 i d i = 2 0 d 0 + 2 1 d 1 + 2 2 d 2 + ⋯

(这实际上是定义“二进制”的原因,如果我们添加数字是整数并且 0 ≤ d i < 2 对于所有i的条件。)

假设我们命名数字o j的八进制数字。我们可以像这样从它的八进制数字计算数字:

    n = ∑ j 8 j o j = 8 0 o 0 + 8 1 o 1 + 8 2 o 2 + ⋯

(这就是“八进制”的定义,如果我们添加数字是整数并且 0 ≤ o j < 8 对于所有j的条件。)

现在让我们回顾一下二元方程。第一步是最棘手的。我们将更改下标的使用方式,以便求和的每个项使用三个二进制数字:

    n = ∑ j 2 3 j + 0 d 3 j + 0 + 2 3 j + 1 d 3 j + 1 + 2 3 j + 2 d 3 j + 2

说服自己该方程计算的n与我给出的第一个方程相同。

我假设您知道x a + b = x a x b。所以我们可以像这样分离这 2 3 j + b系数:

    n = ∑ j (2 3 j 2 0 ) d 3 j + 0 + (2 3 j 2 1 ) d 3 j + 1 + (2 3 j 2 2 ) d 3 j + 2

然后我们可以像这样分解出 2 3 j项:

    n = ∑ j 2 3 j (2 0 d 3 j + 0 + 2 1 d 3 j + 1 + 2 2 d 3 j + 2 )

我假设您也知道x a b = ( x a ) b。所以我们可以像这样拆分 2 3 j项:

    n = ∑ j (2 3 ) j (2 0 d 3 j + 0 + 2 1 d 3 j + 1 + 2 2 d 3 j + 2 )

我们可以将 2 3简化为 8:

    n = ∑ j 8 j (2 0 d 3 j + 0 + 2 1 d 3 j + 1 + 2 2 d 3 j + 2 )

将此与从八进制数字计算数字的公式进行比较,我在此重复:

    n = ∑ j 8 j o j

所以我们可以得出这样的结论:

    o j = 2 0 d 3 j + 0 + 2 1 d 3 j + 1 + 2 2 d 3 j + 2

例如,让我们取j = 2:

    o 2 = 2 0 d 3×2 + 0 + 2 1 d 3×2 + 1 + 2 2 d 3×2 + 2 = 2 0 d 6 + 2 1 d 7 + 2 2 d 8

于 2013-04-06T03:41:40.173 回答