本人在學習過程中對資料類型的存儲範圍的概念非常模糊,特整理一下,不對的地方請評論指正。
我個人的了解:比如 int 類型資料 一般規定是2個位元組的長度,取值範圍是 無符号的 2的16次減1 有符号的是 -2的15次方 到 2的15次方-1. 這個取值範圍是怎麼來的呢?為什麼int的位元組數為2呢?這裡是我最不能明白的地方。通過查閱大量資料,最終通過總結了解得出以下結論。
先說一下第二個問題,為什麼int 的位元組數為2呢?
其實這個是由編譯系統定義的,是規定,至于為什麼這樣規定,就先不深揪了。
在來說一下第一個問題,int 的取值範圍
要明白這個問題,先得看看我的第一篇文章,基礎中的 位元組和位的關系,再來看這篇文章會更加明白。
首先,我們先做個小數值的例子
計算機隻能執行0和1,所有程式最終都會翻譯成0和1的代碼,位是計算機的最小資訊機關(也可以了解成存儲機關),
1個位能表示倆種狀态
0 1倆種狀态也就是2的1次方,十進制取值範圍就是0~1。
2個位就能表示4種狀态
00 01 10 11 四種狀态就是2的2次方,十進制取值範圍就是0~3。
3位就能表示8種種狀态
000 001 010 011 100 101 110 111 8種狀态,也就是2的3次方,十進制的取值範圍就是0~7。
通過以上例子可以得出 n 位能表示的狀态是2的n次方,其十進制取值範圍是0~2的n次方-1。
這是無符号的的,在說一個有符号的,
以三位來說明
000 001 010 011 100 101 110 111
第一位表示狀态也就是正負
他能表示8種狀态,就是-2的2次方~2的2次方減1.
其十進制取值範圍是-4~3啦。(這塊大家可能不明白,我也不是太懂,通過查資料負的二進制數轉換為十進制數的是後要取反加1的,000取反011加一之後是0100是-4啦 ,011取反是000加一就是001就是-1啦。100就是正的0,0不分正負,111就是正的3)
同樣的道理,倆個位元組,就是16位啦,
無符号最大值是0~2的16次方就是0~65535
有符号的就是-2的15次方~2的15次方減1。