在計算機中,當要表示的資料超出計算機所使用的資料的表示範圍時,則產生資料的溢位。要想很好的避免這個問題,首先我們需要了解常用的資料型別的取值範圍:
1.c語言的基本資料型別及其取值範圍:
資料型別 所佔位數 取值範圍
[signed] char 8 -2^7 ~ 2^7-1
unsigned char 8 0 ~ 2^8-1
[signed] short 16 -2^15 ~ 2^15-1
unsigned short 16 0 ~ 2^16-1
[signed] int 32 -2^31 ~ 2^31-1
unsigned int 32 0 ~ 2^32-1
[signed] long 32 -2^31 ~ 2^31-1
unsigned long 32 0 ~ 2^32-1
float 32 -3.4*10(-38)~3.4*10(38)
double 64 -1.7*10(-308)~1.7*10(308)
2.溢位後數值計算:
[max_count]表示型別能表示的資料個數,如char型別(8位)可表示2^8=256
(1)上溢:-[max_count].
(2)下溢:+[max_count]
例1:上溢 char a = 126,則a+45 = ? uchar b = 252 則 b + 100 = ?
解:a+45 = 126 + 45 = 171-256 = -85
b+100 = 252 + 100 =352-256 = 96
例2:下溢 char a = 126,則a+45 = ? uchar b = 2 則 b -100 = ?
解:a+45 = 126 + 45 = 171-256 = -85
b-100 = 2 - 100 = -98+256 =158
3.有符號數和無符號數的轉換:
(1)無符號a->有符號b:
if(a<[max_count]/2)
else
(2)有符號a->無符號b:
if(a>=0)
else
這個就不舉例子了,讀者可以自己驗證!!!
資料溢位相關計算
整數反轉 例 142 241 14 2 1 24 0 241 存在問題 反轉後資料溢位 int型的數值範圍是 2147483648 2147483647 param x return public intreverse int x res res 10 x 10 x x 10 return res ...
Matlab資料分析與計算
1.資料統計分析 max最大值min 最小值sum 求和prod 求積mean 平均數median 中值cumsum 累加cumprod 乘積std 標準差corrcoef 相關係數 sort 排序1.1 最大值和最小值 1.2 求和與求積 1.3 平均值和中值 1.4 累加和與累乘積 1.5 標準...
段落內容溢位的分析
最近在做網頁時,對乙個 p 元素進行測試,出現了下面這種情況。p 元素明明完全在白色框內部,p 元素中的文字卻跑到了外面。百思不得其解。經過查詢,終於明白這種情況與 css 的換行設定有關。瀏覽器預設的換行方式是在單詞斷點處換行,而像上面這樣一連串的字元會被瀏覽器認定為乙個單詞,所以不會換行。這種情...