大整數類型和一般的整數類型相比各有什么優劣?
一、大整數類型和一般的整數類型相比
大整數類型和一般的整數類型相比優點是不會溢出,能表示任意長度的數字做各種精度的運算。
缺點是沒有直接的類型運算支持,必須像人類計算一樣按位數分別計算進行借位/進位操作。。好在現在常用語言比如Java已經內置大數庫,不用重復造輪子了。硬件:不直接支持運算,效率低下。現在的主流計算機通常都是以寄存器為單位進行運算,在這種架構上實現大數運算一般都要從內存讀取后操作,如果存在大量隨機讀寫大數的情況,性能甚至可能下降幾十到上百倍。
普通整數:優缺點剛好和大整數反過來,簡單快,但是會存在溢出和精度丟失問題。
為什么不做自動類型提升?因為很難做啊。首先要知道溢出是一個運行時才能完全確定的問題,那么:對于類型確定的語言根本做不到,因為類型在編譯期間已經確定,除非重新設計一個功能更強大的編譯器。對于無類型的語言,也許可以通過把所有數都存在內存并且設置長度與類型標志位的方法來達到類似的效果,但是這樣程序效率一定會大大降低,并且解釋器會變得更復雜,同時會引入一套新的數據解析規則,很多庫也許都需要重寫。
既然要做無限制的提升,那么數據就不能放在寄存器中,同時還必須設計一套能夠在自動提升/降低時能夠自動申請/釋放內存的方案,同時還必須兼顧性能……
綜上所述,具備設計開發強于GCC/LLVM等靜態編譯器,開發高效解釋語言庫,能完美解決Java的GC問題的人,才能解決這個問題。
延伸閱讀:
二、大整數BigInteger
import java.math.BigInteger;
首先,對于初始化則不像基本類型包裝這塊講著3種方式,這里只剩下valueOf() 可以對其初始化。
接著,大整數變量不能使用算術運算符,需要通過以下方法進行運算:
add():取代了加法運算符“+”;
subtract():取代了減法運算符“-”;
multiply():取代了乘法運算符“*”;
divide():取代了除法運算符“/”;
remainder():取代了取余運算符“%”;
negate():取代了負號運算符“-”。

猜你喜歡LIKE
相關推薦HOT
更多>>
分析型數據庫是什么,和關系型數據庫有什么區別?
一、分析型數據庫分析型是從數據庫的作用來劃分的,其重點用來做數據分析(OLAP),大量都是select語句。還有一種是專門用來做事務處理的,一般...詳情>>
2023-10-17 23:26:16
python self是什么意思,怎么使用?
一、python self介紹首先明確的是self只有在類的方法中才會有,獨立的函數或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在調...詳情>>
2023-10-17 21:24:11
創建Project提交到Github需要做什么?
一、創建Project提交到Github需要做什么1、在Github新建一個repository。2、打開編譯器,編輯最外面的.gitignore,如果沒有就新建一個這樣的文件...詳情>>
2023-10-17 20:23:50
C/S和B/S架構的工作原理及優缺點?
一、C/S架構的工作原理C/S 架構中客戶端和服務器之間通過網絡連接進行通信,客戶端發送請求后會等待服務器返回響應,直到收到響應后才能顯示給...詳情>>
2023-10-17 19:43:01熱門推薦
Web前端開發是什么技術?
沸分析型數據庫是什么,和關系型數據庫有什么區別?
熱對數量龐大的照片進行分類管理,較好的方便檢索的方法是什么?
熱web前端會用到哪些軟件工具?
新Flash動畫制作的原理是什么?
java/Python這么火,c++這么難,為什么我們還要選擇用C++?
app開發的制作為什么報價和開發周期都不一樣?
python self是什么意思,怎么使用?
什么是SEO?
PHP中的interface有什么用處?
創建Project提交到Github需要做什么?
為什么SwiftUI用struct來表示view?
C/S和B/S架構的工作原理及優缺點?
Flash為什么被淘汰了?
技術干貨






