String#sum

String#sum(bits=16)は単純なサムチェックを取るメソッドです。引数はビット数。
疑問:ri sumには「the sum of the binary value of each character in _str_ modulo +2n - 1+」と書いてありますが、modulo $2^{n}$ではないでしょうか?(- 1がいらないという意味)。&によるマスクなら$2^{n} - 1$になると思いますが。

p "Rubyco".sum
p "Rubycp".sum
p "Rubycq".sum
p "Rubycr".sum
p "Rubycs".sum
p "Rubyct".sum
p "Rubycu".sum

p "Rubyco".sum(2)
p "Rubycp".sum(2)
p "Rubycq".sum(2)
p "Rubycr".sum(2)
p "Rubycs".sum(2)
p "Rubyct".sum(2)
p "Rubycu".sum(2)

実行結果です。

628
629
630
631
632
633
634
0
1
2
3
0
1
2