2

一連の819664ビット符号なし整数を追加しています。現在の合計をゼロに「ロールオーバー」してそこからカウントを続ける必要があります...関連する「通常の」プログラミング言語と同じようにINT_MAXの上限。

テストスクリプトが示すように、境界値(FF、FFFFなど)に1を追加すると、合計が増え続けます。機能は間違いありませんが、この特定のインスタンスでは64ビットに制限したいと思います。

これを制限する方法はありbcますか?

unset f 
for ((i=0; i<8; i++)); do 
  f=${f}FF; echo -ne "$((${#f}/2)) bytes + 1      " 
  echo 'ibase=16; obase=10; ('$f'+1)' |bc 
done
echo "I want 8th+1 to = 0000000000000000"

# output
#
# 1 bytes + 1      100
# 2 bytes + 1      10000
# 3 bytes + 1      1000000
# 4 bytes + 1      100000000
# 5 bytes + 1      10000000000
# 6 bytes + 1      1000000000000
# 7 bytes + 1      100000000000000
# 8 bytes + 1      10000000000000000
# I want 8th+1 to = 0000000000000000
4

1 に答える 1

1

これはモジュロと呼ばれ、モジュロとbcについてhttps://superuser.com/questions/31445/gnu-bc-modulo-with-scale-other-than-0を読むことができます。

于 2011-05-15T10:50:06.917 に答える