【发布时间】: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
谁能解释一下为什么二进制形式的数字: 111 是 2^3 - 1 ? 我知道这个数字是由 1*2^0 + 1*2^1 + 1*2^2 计算的,但我看不到如何从这里到 2^3-1 ...看不到任何权力规则什么的..
【问题讨论】:
标签: python python-3.x binary numbers decimal
数字 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) 结束了我们的证明。
【讨论】:
这样想,111 比 1000 小 1(二进制为 8)。
【讨论】:
将1 添加到111:结果为1000。
因此,以下是:
111 + 1 = 1000 → 1000 - 1 = 111现在,1000 是 2<sup>3</sup>,因此:
当然,你也可以用任意个1的个数来描述二进制数
【讨论】:
0000 是 0,0001 是 1,0010 是 2。根据二进制数右侧位的位置,该位等于2^(p - 1),其中p 是该位置。
例如0010 1 是右数第二位。 2^(2 - 1) = 2^1 = 2.
111 是2^3 - 1,因为1000 是2^3 并且111 比1000 少一个单位,因此是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
【讨论】:
碱基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
例子:
【讨论】: