[問題] C#位數的問題 2^31

看板C_Sharp作者時間17年前 (2008/10/04 02:05), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/2 (看更多)
我在C#中執行 int m = ((int)Math.Pow(2, 31)); label4.Text = Convert.ToString(m); 他顯示了 -2147483648 但是應該是要正整數吧 然後我又打了 int m = ((int)Math.Pow(2, 31)-1); label4.Text = Convert.ToString(m); 顯示了2147483647 在java中2的31次方會顯示2147483647 然而在C#中卻顯示了 -2147483648 是不是表示在C#中INT整數型別的最大為2的31次方-1呢??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.7.169

10/04 02:45, , 1F
2^1=2 2^2=4 2^3=8 2^4 =16 2^5=32 所以2^31尾數是偶數
10/04 02:45, 1F

10/04 02:50, , 2F
至於前面的負號應該是溢位吧=.= 2^30=1073741824
10/04 02:50, 2F

10/04 12:24, , 3F
把 int 宣告改成 uint 試試
10/04 12:24, 3F

10/04 21:28, , 4F
1:int的範圍可以查 這在"HELLO WORLD"後應該就要知道了
10/04 21:28, 4F

10/04 21:30, , 5F
手上的資料 int佔4bites 2^32 無號能表達0~ 2^32-1
10/04 21:30, 5F

10/04 21:33, , 6F
有號也就是一般的int就/2 -2^31~ 2^31-1(正數含0少一個)
10/04 21:33, 6F

10/04 21:35, , 7F
所以你可以宣告成uint long single double(VB.NET中)
10/04 21:35, 7F
文章代碼(AID): #18vbxL2u (C_Sharp)
文章代碼(AID): #18vbxL2u (C_Sharp)