Binary 为什么X mod 2pow(256)应该返回256位的固定大小输出?

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

这写在《普林斯顿比特币书》第26页。
我想我理解为什么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

因此,输出长度或范围将是固定的,如果您使用number
2pow(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
.........................
如果您执行任何数字mod
2pow(4
),答案将从
0
15
,可以使用
4
位表示。 假设我们从
0
开始<代码>0mod
2pow(4)
0
,可以用
4
位表示。 因此,在
15
之前,它将提供与输入相同的输出(
number
mod
2pow(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
mod
2(pow)4
)。所以这个序列一直上升到
(2(pow)4)-1
。然后它将再次重复。

2到256的幂实际上是一个257位的数字。这是最小的257位数字,前导为1。是的,谢谢你的更正!然而,任何数字除以2pow(256)的余数怎么会返回一个固定长度的值呢?啊哈!所以这本书的作者没有提到的唯一一件事(我认为我遗漏了一些东西!)是剩余部分可以用0-s填充,以适应256位的长度。谢谢你的澄清!