我知道在浮點乘法中存在錯誤,但是在純粹的整數乘法中存在錯誤嗎?假設我正在使用Python,可以計算A和B的整數A和B的大小,並得到完全正確的答案?牆在哪裏?還有與加法一樣嗎?純粹整數乘法中是否存在錯誤?
0
A
回答
2
(正確)浮點乘法中沒有錯誤。舍入可能會發生,但這不是錯誤,那是算術的定義行爲。通俗地說,這被稱爲「舍入錯誤」,但它不是正常意義上的「錯誤」。
(正確)整數乘法中沒有錯誤。在某些語言中,可能發生溢出,但這不是錯誤,這是算術*定義的行爲。
特別是在Python中,溢出不會發生整數乘法**;結果等於「數學上精確」的結果,如果有必要,它會默默地提升爲一個高音。加法也是如此。
[*]有些語言的溢出會產生陷阱或引發異常;然而,這又是那些語言中定義的行爲。
[**]只要結果不是很大,以至於無法分配存儲空間。
+0
在C中,計算有符號整數時的溢出不能被合理地視爲其他任何東西而不是一個「錯誤」,因爲標準委員會(很不明智的恕我直言)決定編譯器作者應該被賦予完全自由去做任何他們想要的事情,當發生整數溢出時,直到幷包括把CPU變成一堆熔渣[恕我直言,他們應該提供很大的自由度,或許延伸到允許「任何*實現定義*行爲」,但是就「未定義行爲」而言則更糟]。 – supercat 2014-09-24 17:18:38
相關問題
- 1. 矩陣乘法的以下函數中是否存在錯誤?
- 2. 這是我的乘法是錯誤的還是我的整數?
- 3. java不是純粹的OOP
- 4. 靜態工具方法是否純粹面向對象編程?
- 5. 純粹的虛擬方法稱爲錯誤和崩潰
- 6. 純粹數字permalinks in wordpress
- 7. 語法錯誤在OCaml中乘函數
- 8. 返回純粹的純函數是什麼意思?
- 9. 純粹的分割
- 10. 純粹的Arduino C
- 11. 大整數乘法(階乘)
- 12. 整數乘以錯誤的數字
- 13. 檢查輸入是否存在負整數錯誤
- 14. TDD是否以純粹的價值對象和純粹的操縱器/控制器結束?
- 15. 如何表達一個庫中的方法是純粹的?
- 16. 純粹在HTML中聲明Angular Directives?
- 17. 在Fortran中有純粹的時間嗎?
- 18. Monads如何被認爲是純粹的?
- 19. BPMS還是純粹的編程?
- 20. 抽象類和純粹的方法C++
- 21. 長整數乘法
- 22. 無整數乘法*
- 23. 大整數乘法
- 24. 是否可以純粹用html發佈消息給facebook牆?
- 25. 手勢識別是否有純粹的Java框架?
- 26. 純粹的AS3預加載器是否必須擴展MovieClip?
- 27. Java是否有純粹功能不可變的Map實現?
- 28. 是否有任何純粹的客戶端AJAX/JavaScript Spellchecker插件?
- 29. 是否存在StringBuilder錯誤?
- 30. python中的錯誤乘法
溢出很容易打。取兩個8位數字0x02 * 0xFF = 0xFE是錯誤的答案。爲了得到正確的答案,你的結果需要兩倍的位數0xFF * 0xFF = 0xFE01,所以如果你想要做N位乘法使用N * 2位整數 – 2014-09-22 19:37:57