Re: [問題] 長整數的乘法問題.......

看板C_and_CPP作者 (小傑)時間14年前 (2009/10/28 19:24), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《liu2007 (薯)》之銘言: : 我的問題是「長整數的運算」 : 用C++ 6.0 寫的 : 加法跟減法都有做出來 : 但是兩個長整數的乘法 : 每個位數之間的處理狀況是在是太多了 : 所以我想不出快速的解法 : 只好用土法煉鋼的方式 : R = A * B : 設一個count 存乘數 count = B : 然後設一個Result 存結果 R = 0 : 然後設一個迴圈 : while ( cout != 0 ) : { : R = R+A; : count--; : } : 簡單的說就是電腦的原理: 連加 : 以上是我的想法,不是程式碼 : 想請問版上高手是否有更快速的方法?? : 就是直接對每個bit做處理 : 總共做 bit 大次就好了 : 謝謝回答~ 剛剛想的內容 可能有瑕疵 1st.先完成 32bit * 32bit 存成64bit的結果 2nd.從第一步類推到第二步 完成64bit * 64bit 1st.的作法: 有兩個32bit的整數A與B A = AH*2^16 + AL , B = BH*2^16 + BL; AH,AL與BH,BL都是16bit的整數 A*B = AH*BH*2^32 + (AH*BL + AL*BH)*2^16 + AL*BL; AH*BH , AH*BL , AL*BH 與AL*BL都是32bit的整數 把以上四各轉化成相對應的64bit整數後 加起來就是結果 2nd.的作法: 類似1st. 把64bit的整數拆成兩個32bit的整數 各別相乘之後再相加即可 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.190.7

10/28 19:58, , 1F
原po沒有限定在64 bit或128 bit啊@_@"
10/28 19:58, 1F

10/28 21:18, , 2F
對不起我題目沒定義好,因為我不知道長整數有別的實作
10/28 21:18, 2F

10/28 21:18, , 3F
樓下才是我要的,原PO抱歉 Orz...
10/28 21:18, 3F

10/28 22:02, , 4F
沒注意到 沒關係啦 不用道歉 太客氣了
10/28 22:02, 4F
文章代碼(AID): #1Aw2doQu (C_and_CPP)
文章代碼(AID): #1Aw2doQu (C_and_CPP)