Binary 为什么X mod 2pow(256)应该返回256位的固定大小输出?
这写在《普林斯顿比特币书》第26页。Binary 为什么X mod 2pow(256)应该返回256位的固定大小输出?,binary,modular-arithmetic,Binary,Modular Arithmetic,这写在《普林斯顿比特币书》第26页。 我想我理解为什么2pow(256)返回256位长度的值,但为什么任何数字除以2pow(256)的余数返回256位固定长度的值?如果您使用任何数字进行modn,可能的结果是从0到n-1 这里您正在使用2pow(256)进行mod,它是一个257位,与1和2560s的最高有效位相同 可能的结果是从范围0到(2pow(n))-1,可以使用256位作为二进制形式256连续1的最大值(2pow(n))-1 因此,输出长度或范围将是固定的,如果您使用number2pow
我想我理解为什么2pow(256)返回256位长度的值,但为什么任何数字除以2pow(256)的余数返回256位固定长度的值?如果您使用任何数字进行mod
n
,可能的结果是从0
到n-1
这里您正在使用2pow(256)
进行mod,它是一个257
位,与1
和256
0
s的最高有效位相同
可能的结果是从范围0
到(2pow(n))-1
,可以使用256位作为二进制形式256
连续1
的最大值(2pow(n))-1
因此,输出长度或范围将是固定的,如果您使用number2pow(n)
进行mod,则可以使用n位来表示
试着用长度4来理解它
所以2pow(4)是16。二进制形式的10000
,由5
位组成
0%16=0 Binary:0000
1%16=0 Binary:0001
2%16=0 Binary:0010
.........................
.........................
15%16=0 Binary:1111
16%16=0 Binary:0000
17%16=1 Binary:0001
.........................
.........................
31%16=0 Binary:1111
32%16=0 Binary:0000
33%16=1 Binary:0001
.........................
如果您执行任何数字mod2pow(4
),答案将从0
到15
,可以使用4
位表示。
假设我们从0
开始<代码>0mod2pow(4)
是0
,可以用4
位表示。
因此,在15
之前,它将提供与输入相同的输出(number
mod2pow(4)
),因此可以使用4
位表示
0%16=0 Binary:0000
1%16=0 Binary:0001
2%16=0 Binary:0010
.........................
.........................
15%16=0 Binary:1111
16%16=0 Binary:0000
17%16=1 Binary:0001
.........................
.........................
31%16=0 Binary:1111
32%16=0 Binary:0000
33%16=1 Binary:0001
.........................
这个序列一直在进行
对于输入
16
,它将再次给出输出0
(16
mod2(pow)4
)。所以这个序列一直上升到(2(pow)4)-1
。然后它将再次重复。2到256的幂实际上是一个257位的数字。这是最小的257位数字,前导为1。是的,谢谢你的更正!然而,任何数字除以2pow(256)的余数怎么会返回一个固定长度的值呢?啊哈!所以这本书的作者没有提到的唯一一件事(我认为我遗漏了一些东西!)是剩余部分可以用0-s填充,以适应256位的长度。谢谢你的澄清!