2011-05-15 27 views
2

我添加了一系列8196 64位無符號整數,我需要將運行總量「翻轉」回零,並從那裏繼續計數......就像「正常」編程語言在相關的INT_MAX限額。BC中的十六進制如何在8個字節的限制內溢出(uint64)?

正如測試腳本所示,給邊界值(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 

回答

1

這叫做模數,你可以在這裏讀取https://superuser.com/questions/31445/gnu-bc-modulo-with-scale-other-than-0關於模數和bc。

+0

啊..謝謝...我一直專注於,並期待它是'BC'設置,像'BC_LINE_LENGTH = nnn'或'scale'或者其他類似的東西......我從來沒有以這種方式想到一個模...即。它有效地截斷了高階結束......我只是想過它作爲「永恆存在」商的其餘部分...好吧,整潔......所以我只需要在每次添加後進行模數... :) – 2011-05-15 11:52:20

相關問題