Re: [問題] 'AND' bitwise 運算

看板Perl作者 (Cindy Wang)時間9年前 (2015/11/24 01:59), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《rkcity (喵。罐頭)》之銘言: : 今天在寫個小tool的時候發現 : Perl 的 & 運算好像怪怪的... : Source: : $value = 4294967296; : print ($value & 0xFFFFFFFF); : Output: : 4294967295 : Expect: : 預期應該是0 : Excute Perl Online: : http://codepad.org/9qM322Vf : 最後我用mod先解掉了.. : 似乎是只要大於4294967295(0xFFFFFFFF) 就會這樣 : 即使mask設成 0x00000000FFFFFFFF 也是一樣結果 : 請問這有辦法解決嗎? 你的 Perl 是 32bits 版本 (大概你的機器環境是 32bits 的?), 所以無號整數的範圍最大是 4294967295, 常數寫超過的時候 Perl 會讓它停在這個最大值.. 解法... 可以找 64bits 機器環境使用 64bits 的 Perl.. ^^| (嗯, 因為不知道你真實的需求是什麼, 如果只看這幾行的話, 直接寫 print 0 可能是最佳解? ^^|) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.78.5 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1448301557.A.424.html

11/24 09:34, , 1F
哈哈哈 感謝回覆 環境是32bit
11/24 09:34, 1F

11/24 09:38, , 2F
需求是我現在需要做一個計算不同checksum的tool。其中一
11/24 09:38, 2F

11/24 09:39, , 3F
種是計算所有數值的加總 但是必須放回32bit register
11/24 09:39, 3F

11/24 09:40, , 4F
用C的話overflow部分會直接被吃掉 不會像perl停留在最大值
11/24 09:40, 4F

11/24 13:22, , 5F
太厲害了!!
11/24 13:22, 5F
文章代碼(AID): #1MKrFrGa (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1MKrFrGa (Perl)