資料型態範圍
記憶體的最小單位為bit,每一個bit可以存0或1,32位元電腦的cpu有32個bit(4byte)的存放區塊可以存放記憶體位址。
位元bit與位元組byte
bit正整數範圍
以下列出1到8個bit可以存放的最大正整數值與正整數範圍。
bit | 組合 | 最大正整數(2進制) | 最大正整數(10進制) | 可以存放的正整數範圍 |
---|---|---|---|---|
1 | 0/1 | 1 | \(2^1-1 = 1\) | 0-1 |
2 | 00/01/10/11 | 11 | \(2^2-1 = 3\) | 0-3 |
3 | 000/001/010/100/110/101/111 | 111 | \(2^3-1 = 7\) | 0-7 |
4 | 0000/0001/0010…1111 | 1111 | \(2^4-1 = 15\) | 0-15 |
5 | 00000/00001/…11111 | 11111 | \(2^5-1 = 31\) | 0-31 |
6 | 000000/000001/…111111 | 111111 | \(2^6-1 = 63\) | 0-63 |
7 | 0000000/0000001/…1111111 | 1111111 | \(2^7-1 = 127\) | 0-127 |
8 | 00000000/00000001/…11111111 | 11111111 | \(2^8-1 = 255\) | 0-255 |
byte正整數範圍
由上表可以推斷,1個byte由8個bit組成,可存放最大正整數為255,可以存放的正整數範圍從0-255,共256個數字。
以下列出1byte到4byte最大可存放的數字。
byte | bit | 最大正整數(10進制) |
---|---|---|
1byte | 11111111 | 255 |
2byte | 11111111 11111111 | 65535 |
3byte | 11111111 11111111 11111111 | 16777216 |
4byte | 11111111 11111111 11111111 11111111 | 4294967295 |
科學記號法顯示
byte | bit | 科學記號法 |
---|---|---|
1byte | 11111111 | $2^8-1$ |
2byte | 11111111 11111111 | $2^8 * 2^8 -1= 2^{8+8}-1 = 2 ^{16}-1 $ |
3byte | 11111111 11111111 11111111 | $2^8 * 2^8 * 2^8-1 = 2^{8+8+8}-1$ |
4byte | 11111111 11111111 11111111 11111111 | $2^8 * 2^8 * 2^8 * 2^8-1 = 2^{8+8+8+8}-1 = 2 ^{32}-1 $ |
正負數
若資料型態是包含正負數,會將最大整數減半,一半分給正數,一半分給負數。最左邊的第1個bit就會變成正負號,0為正數,1為負數。負數的二進制顯示方式為把正數的二進制0和1互換,最後再加1。
正負數
二進位 | 正負數 |
---|---|
01111111 | 127 |
10000001 | -127 |
01111111 11111111 | 32767 |
10000000 00000001 | -32768 |
01111111 11111111 11111111 | 8388607 |
10000000 00000000 00000001 | -8388608 |
01111111 11111111 11111111 11111111 | 2147483647 |
10000000 00000000 00000000 00000001 | -2147483648 |
正負數範圍
占用Byte數量 | 正負數範圍 |
---|---|
1byte | -128~127 |
2byte | -32768~32767 |
3byte | -8388608~8388607 |
4byte | -2147483648~2147483647 |
unsinged正整數
unsigned代表沒有符號,所以只有正整數,不會有負號。
占用Byte數量 | 正數範圍 |
---|---|
1byte | 0~255 |
2byte | 0~65535 |
3byte | 0~16777216 |
4byte | 0~4294967295 |