如何表示超出任何特定數據類型(int,long)的最大值的值?如何表示大於最大值的數字
我在考慮讓另一個存儲空間像計數器一樣工作。一旦超過最大值,計數器更新說,變量已經超過了「x」次數的限制。還有其他一些有效的方法嗎?
我們如何顯示確切的值?
P.S:只是一個假設的問題。
如何表示超出任何特定數據類型(int,long)的最大值的值?如何表示大於最大值的數字
我在考慮讓另一個存儲空間像計數器一樣工作。一旦超過最大值,計數器更新說,變量已經超過了「x」次數的限制。還有其他一些有效的方法嗎?
我們如何顯示確切的值?
P.S:只是一個假設的問題。
一種方法是實際爲此目的劃出一個值。
例如,如果您有一個16位整數類型可以表示0到65535之間的值,請將範圍縮小到0到65534,並使用65535來表示值「too darned big」。
您必須小心控制操作,以便它們不會在正常事件過程中產生該值,但如果您的語言提供了班級功能,則這樣做相當容易。
或者,您可以使用下一個最大的數據類型,例如用於long
或int
爲long long
和long
使用額外的範圍來存儲信息。
而且,如果您需要的不止於此,您可以編寫一個bignum庫(或使用一個已存在的庫),以便對您的編號沒有任何人爲限制。
我不確定,但我想你必須創建自己的數據類型(或類)。這已經在之前完成了。事實上,一些語言有自己的執行本:
http://groups.csail.mit.edu/mac/users/adams/BigInt/BigInt.html
考慮一個標準的IEEE-754浮點數和「無限」的位模式。人們可以在固定的int/long內保留一個類似的位模式來表示「Infinity」。但是,像大多數FPU一樣,CPU不會幫助你處理數學/溢出狀態。
一些像Ruby或elisp這樣的語言已經在整數中保留位了(例如Ruby中的fixnum被限制爲[-2^29,2^29-1],因爲2位用於對象管家)。使用特定的比特模式與比特只會刪除一個潛在值。
如果你談論的是更高層次的語言,比方說,C#,那麼它很容易定義自定義類型:
struct IntWithStuff {
int value;
bool isTooBig;
}
你也可以重載各個運營商和實施一些(明確的)管型,但我離題...