【问题标题】:Binary to decimal conversion - formula explanation二进制转十进制——公式解释
【发布时间】:2013-11-06 12:01:30
【问题描述】:

谁能解释一下为什么二进制形式的数字: 111 是 2^3 - 1 ? 我知道这个数字是由 1*2^0 + 1*2^1 + 1*2^2 计算的,但我看不到如何从这里到 2^3-1 ...看不到任何权力规则什么的..

【问题讨论】:

    标签: python python-3.x binary numbers decimal


    【解决方案1】:

    数字 2 的一个独特属性是它之前的幂之和等于下一个幂级减去 1。

    换句话说:

    2^n=2^0+2^1+2^2+...+2^(n-1)+1 for n in (1,2,3...)

    如果需要证明,请使用数学归纳法。

    基地:n=1; 2^1=2=2^0+1=1+1

    假设n=k 的属性2^n=2^0+2^1+...+2^(n-1)+1 满足

    对于 n=k+1,你有 2^n=(2^k)*(2^1) 然后应用假设,你有

    2^n=(2^0+2^1+...+2^(n-2)+1)*2 产生

    2^n=(2^1+2^2+...+2^(n-1)+2)=1+2^0+2^1+...+2^(n-1) 结束了我们的证明。

    【讨论】:

      【解决方案2】:

      这样想,111 比 1000 小 1(二进制为 8)。

      【讨论】:

        【解决方案3】:

        1 添加到111:结果为1000

        因此,以下是:

        111 + 1 = 1000 → 1000 - 1 = 111

        现在,10002<sup>3</sup>,因此:

        23 - 1 = 111

        当然,你也可以用任意个1的个数来描述二进制数

        【讨论】:

          【解决方案4】:

          000000001100102。根据二进制数右侧位的位置,该位等于2^(p - 1),其中p 是该位置。

          例如0010 1 是右数第二位。 2^(2 - 1) = 2^1 = 2.

          1112^3 - 1,因为10002^3 并且1111000 少一个单位,因此是2^3 - 1

          顺便说一句,在 python 中,您可以使用0b 作为二进制值的标记。

          x = 0b111
          y = 2 ** 3 - 1
          print(x == y)
          >> True
          

          int()函数可以用来转换二进制字符串

          x = int("111", 2) # Base 2
          y = 7
          print(x == y)
          >> True
          

          【讨论】:

            【解决方案5】:

            碱基B的通式如下:

            (B^N + ... + B^1 + B^0)*(B-1) =

            (B^(N+1) + ... + B^2 + B^1) - (B^N + ... + B^1 + B^0) =

            B^(N+1) - B^0 = B^(N+1)-1

            例子:

            1. B=2 和 N=3 给出 2^4 - 1 = 1111 二进制
            2. B=10 和 N=3 给出 10^3 - 1 = 999 十进制

            【讨论】:

              猜你喜欢
              • 2023-03-10
              • 2014-10-30
              • 2014-01-07
              • 2012-04-08
              • 2012-11-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-02-06
              相关资源
              最近更新 更多