推 Sany:try catch? 04/03 22:30
※ 編輯: maydayai 來自: 61.223.194.219 (04/03 22:32)
推 F23ko:try catch好像不會抓溢位喔.... 04/03 22:32
→ rephansu:取最高位元加一加就知道... 04/03 22:41
推 nowar100:我記得C/C++不管溢位 要自己寫判斷式去抓吧 04/03 22:42
→ ogamenewbie:用型態的最大值反推算後跟左側的比大小? (亂猜 04/03 22:42
→ rephansu:我想錯了... 04/03 22:57
推 AstralBrain:把它cast成long long算 04/03 23:03
對了 他要我們不用*去寫相乘
而是用連加去寫相乘 不曉得這資訊有沒有幫助
有個想法是當快要加到溢位的時候
最接近的那個值跟溢位值相差小於下一次要加上的值
那就停止
(EX:29是溢位值 3*11=33溢位 那當3加9次變成27 29-27>3就停止)
不過以原PO的程度還不曉得該怎麼寫
※ 編輯: maydayai 來自: 61.223.194.219 (04/03 23:38)
※ 編輯: maydayai 來自: 61.223.194.219 (04/03 23:41)
推 Yshuan:原po都有想法了 程式一定寫得出來阿~ 感覺這練習不錯~ 04/03 23:46
→ maydayai:我才剛學不到一個月= = 寫不出來阿~ˊˋ 04/03 23:47
→ Yshuan:c=a*b| for(i=0,c=0;i<a;i++){ c+=b; if(OVER-c>b) break;} 04/03 23:51
推 hilorrk:可以參考硬體的overflow和carry的作法...判斷高位元 04/03 23:54
→ hilorrk:我想要求用連加的方法來算乘法也是為了如此 04/03 23:54
→ rephansu:用2位元運算的話要看最高兩位才可以完全預測 04/03 23:59
→ maydayai:謝謝Y大的程式碼 不過以我目前程度可能要研究好一陣子= = 04/04 00:00
推 andyjy12:logA+logB >MAX ->break; 04/04 17:42
推 suhorng:那為什麼不一開始就先用除法判斷 ? 04/04 18:33
→ maydayai:除法???@@ 04/04 20:04
推 FAITHY:推andyjy12的方法 04/04 21:37
→ FAITHY:andyjy12的方法簡單兩三行程式碼就解決了 不過老師說要用 04/04 21:39
→ FAITHY:連加法 是把A.B轉為二位數 做乘法法運算並allocate陣列作 04/04 21:41
→ FAITHY:值得相加 04/04 21:42
→ pico2k:寫asm去檢查溢位flag比較快... 04/04 23:06