C或者C 如何建立可以容納任意大整數的資料型別?

時間 2021-05-12 01:38:45

1樓:習習谷風

高精度又不是什麼麻煩的東西。只要實現了list的封裝(鍊錶,變長陣列,還是平衡查詢樹看你資料的需要),再確定每一位的進製,base10效率太低,用1000就差不多了。然後自己封裝加減乘除,math庫的一些函式。

2樓:Alan Li

可以使用在金融方面廣泛採用的packed decimal十進位制資料型別,它的特點是用半個位元組表示乙個數字(4bits最大能表示16,這裡只用到0-10),另外需要半個位元組存放符號。故假如建立了一萬個bytes的陣列,那麼可以存乙個數字為19999的十進位制超大整數(因為要去掉半個位元組存符號)。

好處是已經有庫專門處理這種型別,並且占用空間相當小。壞處是運算需要模擬十進位制(當然這麼大的整數都是要模擬運算的啦)。IBM System Z有相應的指令處理packed decimal型別(當然只能處理一定長度的資料),可以做得非常快。

packed decimal的具體定義可參見:

3樓:丁國鋒

1. 不需要鍊錶,當然你也可以用鍊錶實現。

2. 你可以用兩個int型來實現64位整形,需要自己編寫函式去實現。

3. 現在的編譯器都有提供這方面的支援了。VC裡是int64/int128型別,lccwin和gcc裡有long long 型別,都是大整數。

C和C 的適用場合?如何建立C 實現的動態庫?動態庫如何保證向後相容,即二進位制相容性?

馮東 C 和 C 標準都沒有規定二進位制相容。但是這不意味著 C 和 C 在這件事情上是等同的。所謂 標準沒有規定 A 是說 不存在乙個通用的方法保證 A 在所有編譯器和 OS 的組合上都成立 但是它並不會阻止乙個更弱一些的方案,就是 在每個編譯器和 OS 的組合上至少存在乙個方案讓 A 成立 C ...

學Linux都可以做些什麼?是不是建立在c語言基礎上?應用上可以做些什麼?

eechen 全球TOP超算,超過95 都是採用Linux系統,用的是RedHat SUSE Debian這些GNU Linux發行版的。國內的BAT,國外的FLAG,總之就是世界大多數網際網路公司,採用的Web和資料庫伺服器都是Linux。還有雲服務提供商包括微軟的Azure,也都大量部署了Lin...

年薪十萬可以買CLA或者C級嗎?

吃貨小霸王 可以上雷克薩斯,英菲尼迪,謳歌,凱迪拉克,奧迪,寶馬,賓士,Teana,要啥有啥只要你願意,還有就是看你自己是不是買來當玩具。點名A4L,Q50L,Teana,A4L排最後。剛細細的看了一下,你還是買個本田豐田什麼的,最好別人不懂,追求品質生活真的就Teana了。買個2.5硬說自己買乞丐...