兩大類, 基本型態包括
六種,使用者自定的型態是指以 enum, struct, union 所定義之型態, 以下僅就第一類進行簡單的介紹, 第一類中的整數型態及字元型態尚可配合 unsigned 用來存放非負整數資料。
使用單一位元組 (八個位元), 可以存放一個 ASCII 編碼的字元, 或是以二進位存放一個 0 - 255 之間的整數, 或是以二的補數法存放一個 -128 - 127 之間的整數。
使用雙位元組, 可以用二進位存放一個 0 - 65535 (2^16-1) 之間的整數, 或是以二的補數法存放一個 -32768 - 32767 之間的整數。
使用四個位元組, 可以用二進位存放一個 0 - 2^32-1 之間的整數, 或是以二的補數法存放一個 -2^31 - 2^31-1 之間的整數。
使用四個位元組, 可存放以 IEEE 754 格式 sign, mantissa, exponent 方法表示之浮點數, 範圍約在 ±10^38 至 ±10^(-38) 之間, 其 roundoff 誤差與數值大小有關, 誤差與數值之比約為 10^(-7)。
使用八個位元組, 可存放以 IEEE 754 格式 sign, mantissa, exponent 方法表示之浮點數, 範圍約在 ±10^308 至 ±10^(-308) 之間, 其 roundoff 誤差與數值大小有關, 誤差與數值之比約為 10^(-16)。
第 8 位數以後就不正確了,是不是?
可以用另外一個角度來想, 4 個位元組總共 32 個位元, 可以有 2^32 (大約是 10^9) 種組合, 假設每一種組合代表一個 10^38 ~ -10^38 中的一個數字的話, 顯然無法表示其中每一個數字, 甚至連每一個整數都不可能, 因此在這範圍內只能挑一些代表的數值如下圖:
兩端間隔很大,反正數值已經那麼大了, 多錯一點也是應該的, 間隔與數值的比例維持在大約 10^(-8), 所能表示的數字絕對值最小約 10^(-38), 若是 double 型態的話, 間隔與數值的比例維持在大約 10^(-16), 所能表示的數字絕對值最小約 10^(-308)。
回
程式設計課程
首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw