全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2865
推到 Plurk!
推到 Facebook!

BCB Int 的溢位問題

尚未結案
spiderman
一般會員


發表:9
回覆:5
積分:2
註冊:2003-05-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-29 21:57:54 IP:203.70.xxx.xxx 未訂閱
各位高手大家好!這個問題已經困擾小弟很久了,希望有高手能指點迷津! 小弟已經試過了用 Double, Long Double, Signed Int, Unsigned Long Int... 甚至是Int64 -2^63..2^63-1 signed 64-bit,都無法解決掉Int最大只有 608026624的問題,有沒有什麼方法可以讓Int突破這個界限呢!? 嗨
------
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-29 22:01:06 IP:218.166.xxx.xxx 未訂閱
可以請您說明您想要做什麼嗎 也許可以用別種方式取代
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-29 22:27:54 IP:61.219.xxx.xxx 未訂閱
spiderman 你好,   我有試過這個情形, 沒有你說的 int 值不能超過 608026624 的問題,   如下列程式碼...  int i = 1608026624;   並且, 你所說地情形 是不可能的! 恕我這樣說, 是你的程式某部份   可能出了問題, 因此, 請你把程式貼上來... 讓有心人替你看, 不然   你po 幾次都不會 找出問題關鍵的  <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
spiderman
一般會員


發表:9
回覆:5
積分:2
註冊:2003-05-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-29 22:56:42 IP:203.70.xxx.xxx 未訂閱
不好意思~~我再說得清楚點…… 像您所說的int i=1608026624; 但是當您做ShowMessage(i);的時候,它只抓到了608026624, 這樣您明白我的意思嗎?? 像這種問題應該怎麼處理呢?? 嗨
------
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-29 23:02:55 IP:140.135.xxx.xxx 未訂閱
spiderman您好:   假如只是要秀出來而且沒有做數值運算何不用     
 
 String a="1608026624";
 ShowMessage(a);
  
順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-29 23:50:50 IP:61.219.xxx.xxx 未訂閱
spiderman 你好,   恩 我試了一下, 還是沒有問題啊   還是請你把 整個 project 放上來   幫你看看吧     *真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
spiderman
一般會員


發表:9
回覆:5
積分:2
註冊:2003-05-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-30 09:33:27 IP:203.70.xxx.xxx 未訂閱
不好意思~~這是我整個Project    //---------------------------------------------------------------------------    #include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i; i=28*28*28*28*28*28*28; ShowMessage(i); } //---------------------------------------------------------------------------
------
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-30 10:29:55 IP:203.73.xxx.xxx 未訂閱
引言:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   __int64 i=1;
   for(int j=0; j<7; j  )
   {
      i*=28;
   }
   ShowMessage(i);
}
spiderman 你好: (1)改成上面這樣看看可不可以呢?? (
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-30 11:57:02 IP:211.23.xxx.xxx 未訂閱
請勿重覆標題    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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-30 12:39:14 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-30 23:27:04 IP:61.59.xxx.xxx 未訂閱
真的非常謝謝你們!!你們的方法對我很有幫助!! 不好意思, 我現在有另一個疑問, 那就是我們能去改(或是自訂)Int、Float、Double大小的預設值嗎? 或者是說有沒有辦法將Int、Float之類的改為近乎於無限大呢? (Sorry!我正在寫RSA,因此Int64不能滿足我的需求,我 需要至少512 Bits的容量)。 嗨
------
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-30 23:37:14 IP:61.221.xxx.xxx 未訂閱
引言: 真的非常謝謝你們!!你們的方法對我很有幫助!! 不好意思, 我現在有另一個疑問, 那就是我們能去改(或是自訂)Int、Float、Double大小的預設值嗎? 或者是說有沒有辦法將Int、Float之類的改為近乎於無限大呢? (Sorry!我正在寫RSA,因此Int64不能滿足我的需求,我 需要至少512 Bits的容量)。 嗨
spiderman 你好:
(1)小弟我覺得你~~真的應該跟所有回答你問題的人說聲抱歉,你正在寫 RSA 的
   事情是不是應該早點講比較好呢??
( >
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
spiderman
一般會員


發表:9
回覆:5
積分:2
註冊:2003-05-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-30 23:54:41 IP:61.59.xxx.xxx 未訂閱
Sorry!! 我是第一次上這種網站發問的~~ 我不太會說話. 各位大大不要生氣啊! 嗨
------
系統時間:2024-05-19 9:44:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!