BCB Int 的溢位問題 |
尚未結案
|
spiderman
一般會員 發表:9 回覆:5 積分:2 註冊:2003-05-19 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
|
spiderman
一般會員 發表:9 回覆:5 積分:2 註冊:2003-05-19 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
|
spiderman
一般會員 發表:9 回覆:5 積分:2 註冊:2003-05-19 發送簡訊給我 |
不好意思~~這是我整個Project //--------------------------------------------------------------------------- #include
------
嗨 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:spiderman 你好: (1)改成上面這樣看看可不可以呢?? (void __fastcall TForm1::Button1Click(TObject *Sender) { __int64 i=1; for(int j=0; j<7; j ) { i*=28; } ShowMessage(i); }
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
請勿重覆標題 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31176 三日後恕刪 給高階語言的程式設計師們: 大家手上的CPU, 我想不是Intel就是AMD的吧, 當然也有別家
但是只要是Intel 相容CPU, 目前...最多也是128bits, 但一般只是32bits的CPU
也就是說, CPU"一次"可以處理32bits->4 bytes->a dword->int 4bytes=0xFFFFFFFF <--自己可以用小算盤算一下, 轉成10進位有多大
如果還不夠, 請宣告int64
8bytes=0xFFFFFFFFFFFFFFFF <--自己可以用小算盤算一下, 轉成10進位有多大 如果你還覺得這樣的數字不夠你用, 我目前所知道的, 只有兩個辦法
1. 自己作另外一版的C++ compiler, 可以宣告成int128 or int256 or int512...etc
當然, 你要修改相關的math函式 ^^~~~~~
2. 請使用天文數字字串處理
比如說 0x1234, 原來是用int就可以存下來
但是以天文數字字串處理, 是要存成char[4]={0x01, 0x02, 0x03, 0x04}
以這種方式來處理的話, 你要來個1億位數的數字也不是問題
char[一億]={0x??, 0x??.......}
當然, 這是一個觀念, 不能直接char[一億], 而是要自己allocate memory
而且要寫好相關的字串加減乘除函式, 只要你PC上插的DIMM夠大, 你要多少位元的數字, 都絕對不是問題
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
spiderman 你好,
這個問題應該是 c++ 內部處理整數數值 預設是 int 所造成的,
所以在處理或輸出前就 truncate 掉了, 所以值會比較小或為負,
這裡 RaynorPao 的方法就可行了, 不過我再列出一些東西:
(1)
__int64 i = __int64(1)*28*28*28*28*28*28*28;
// 先轉出一個較大型態的數值 以強迫編譯器以此類別進行後面運算
(2)
__int64 i = __int64(*28*28*28*28*28*28*28);
// 這樣的結果與原來相同, 也就在在轉型前 已經truncate 了,
// ps. 我到現在才了解 int(x) 與 (int)x 是有這樣差別的
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
spiderman
一般會員 發表:9 回覆:5 積分:2 註冊:2003-05-19 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 真的非常謝謝你們!!你們的方法對我很有幫助!! 不好意思, 我現在有另一個疑問, 那就是我們能去改(或是自訂)Int、Float、Double大小的預設值嗎? 或者是說有沒有辦法將Int、Float之類的改為近乎於無限大呢? (Sorry!我正在寫RSA,因此Int64不能滿足我的需求,我 需要至少512 Bits的容量)。 嗨 spiderman 你好: (1)小弟我覺得你~~真的應該跟所有回答你問題的人說聲抱歉,你正在寫 RSA 的 事情是不是應該早點講比較好呢?? ( > > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
spiderman
一般會員 發表:9 回覆:5 積分:2 註冊:2003-05-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |