當前位置:首頁 » 存儲配置 » 存儲超大數字

存儲超大數字

發布時間: 2022-04-11 00:21:55

『壹』 c#怎麼儲存更大的數字 double和long儲存的數字范圍的確很廣,但總有上限,比如我計算√2

據我所知C#最精確的類型是decimal,最多精確28位有效數據,按你的要求,只能手動實現高精度,而且精確到幾百億即使銀河那個級別的大型機也要跑到人類毀滅,而且在大型機上是不會使用C#的。

以下內容摘自《C#語言規范5.0》的4.1.7章

decimal 類型
decimal類型是 128 位的數據類型,適合用於財務計算和貨幣計算。decimal類型可以表示具有 28 或 29 個有效數字、從 1.0 × 10−28到大約 7.9 × 1028 范圍內的值。
decimal類型的有限值集的形式為 s × c × 10-e,其中符號 s是 0 或 1,系數c由 0 ≤ c < c < 296 給定,小數位數 e滿足 0 ≤ e ≤ 28。decimal類型不支持有符號的零、無窮大或 NaN。decimal可用一個以 10 的冪表示的 96 位整數來表示。對於絕對值小於 1.0m的 decimal,它的值最多精確到第 28位小數。對於絕對值大於或等於 1.0m的 decimal,它的值精確到小數點後第28 或 29 位。與 float和 double數據類型相反,十進制小數數字(如 0.1)可以精確地用 decimal表示形式來表示。在 float和 double表示形式中,這類數字通常變成無限小數,使這些表示形式更容易發生舍入錯誤。
如果二元運算符的一個操作數為 decimal類型,則另一個操作數必須為整型或 decimal類型。如果存在一個整型操作數,它將在執行運算前轉換為 decimal。
decimal類型值的運算結果是這樣得出的:先計算一個精確結果(按每個運算符的定義保留小數位數),然後舍入以適合表示形式。結果舍入到最接近的可表示值,當結果同樣地接近於兩個可表示值時,舍入到最小有效位數位置中為偶數的值(這稱為「銀行家舍入法」)。零結果總是包含符號 0 和小數位數 0。
如果十進制算術運算產生一個絕對值小於或等於 5 × 10-29 的值,則運算結果變為零。如果 decimal算術運算生成的結果對於 decimal格式來說太大,則將引發 System.OverflowException。
與浮點型相比,decimal類型具有較高的精度,但取值范圍較小。因此,從浮點型到 decimal的轉換可能會產生溢出異常,而從 decimal到浮點型的轉換則可能導致精度損失。由於這些原因,在浮點型和 decimal之間不存在隱式轉換,如果沒有顯式地標出強制轉換,就不可能在同一表達式中同時使用浮點操作數和 decimal操作數。

『貳』 int類型能夠存儲的最大數值是多少2進制

int類型能存儲的最大數值是2^32
int類型在內存中佔4個位元組,也就是用32位二進製表示。其中最高位為符號位,0表示正,1表示負。
int類型正數上限二進製表示為0111 1111 1111 1111即(2^32)-1,表示0的符號位是0(即最高位是0):0000 0000 0000 0000
由於0已經被正數這一邊表示了,所以負數的1000 0000 0000 0000就可以用來表示-2^32

『叄』 c語言中怎麼存儲一個很大很大的數

C語言的系統類型,均有大小的限制。超出這個存儲范圍,就無法用該類型進行存儲。所以需要根據數據規模,來選擇存儲類型。

當需要存儲的數很大很大,超出所有可以類型可以表示的范圍時,比如一個100位的10進制數,就需要用字元串的方式進行存儲。這種存儲方式,在演算法中稱為大數存儲,對這種大數的計算,稱為大數計算。

(3)存儲超大數字擴展閱讀:

順序結構:

順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。

例如:a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子裡面的水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為:c = a; a = b; b = c;執行結果是a = 5,b = c = 3如果改變其順序。

寫成:a = b; c = a; b =c;則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結構。

例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。

『肆』 一個位元組可以存儲多大的數字

一個位元組有8位,每一位兩種狀態1或者0

計算機儲存數據是以二進制的方式,有一位為符號位,所以最大數為01111111轉化為十進制數為127。

若無符號,最大數為11111111轉化為十進制為255。

二進制,是計算技術中廣泛採用的一種數制,由德國數理哲學大師萊布尼茨於1679年發明。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」。

當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。

(4)存儲超大數字擴展閱讀:

與十進制

1,二進制轉十進制

方法:「按權展開求和」。

2,十進制整數轉二進制數:「除以2取余,逆序排列」(除二取余法)

3,十進制負數轉二進制:「先取正數的二進制值,再取反,加1」。

與八進制

二進制數轉換成八進制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進制數的數字表示,不足3位的要用「0」補足3位,就得到一個八進制數。

八進制數轉換成二進制數:把每一個八進制數轉換成3位的二進制數,就得到一個二進制數。

與十六進制

二進制數轉換成十六進制數:二進制數轉換成十六進制數時,只要從小數點位置開始,向左或向右每四位二進制劃分一組(不足四位數可補0),然後寫出每一組二進制數所對應的十六進制數碼即可。

十六進制數轉換成二進制數:把每一個十六進制數轉換成4位的二進制數,就得到一個二進制數。

參考資料來源:網路-二進制

『伍』 如果系統要使用超大整數(超過long長度范圍),請你設計一個數據結構來存儲這種超大型數字以及設計一種算

在C/C++裡面已經有了這種數據結構 LONGLONG java裡面則用BigInteger來表示任意長得整數

『陸』 一個位元組可以存儲多大的數字

一個位元組有8個位,每個位有2種狀態
1和0
於是呢
如果將首位作為符號位
即1為負數
0為整數

一位元組存的最小數為
11111111(-128)
最大數為
01111111(127)
如果沒有符號位則
最小數為00000000(十進制0)
最大數為11111111(十進制255)

『柒』 如何用C++做到存儲一個超大數字

可以用unsigned __int64或unsigned long long int類型存儲。
用string你怎麼實現200!的計算過程?

熱點內容
一個伺服器可以搭建多少游戲 發布:2024-11-20 19:43:56 瀏覽:970
哈希函數c語言 發布:2024-11-20 19:43:03 瀏覽:743
微信怎麼多開分身安卓 發布:2024-11-20 19:37:39 瀏覽:374
上傳ftp工具 發布:2024-11-20 19:37:36 瀏覽:26
安卓手機找不到了調靜音了怎麼找 發布:2024-11-20 19:37:28 瀏覽:218
為什麼qq的伺服器加速不行 發布:2024-11-20 19:34:13 瀏覽:512
哪些情況要重新編譯 發布:2024-11-20 19:26:02 瀏覽:864
微信騰訊資料庫 發布:2024-11-20 19:24:55 瀏覽:808
彈簧預壓縮 發布:2024-11-20 19:24:06 瀏覽:934
phpip2long 發布:2024-11-20 19:16:47 瀏覽:948