資料型態範圍

記憶體的最小單位為bit,每一個bit可以存0或1,32位元電腦的cpu有32個bit(4byte)的存放區塊可以存放記憶體位址。

位元bit與位元組byte

bit正整數範圍

以下列出1到8個bit可以存放的最大正整數值與正整數範圍。

以下減1代表扣掉0這個數字。

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

科學記號法顯示,以下減1代表扣掉0這個數字。

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 $

正負數

若資料型態是包含正負數,會將最大整數減半。

在 8-bit 下,把\(2^8 = 256\)切一半,正整數 0 - 127 共 128 個正整數,負數 -1 至 -128 共 128個負數,128 正整數 + 128 負數 = 256個數字。

正整數二進位表示方式,最左邊的第1個bit為0,代表正整數。

負數的表示方式,最左邊的第1個bit為1,代表負數,把正整數的二進位0和1互換,再加上1。

二進位 正負數
01111111 127
10000001 -127
01111111 11111111 32767
10000000 00000001 -32767
01111111 11111111 11111111 8388607
10000000 00000000 00000001 -8388607
01111111 11111111 11111111 11111111 2147483647
10000000 00000000 00000000 00000001 -2147483647

正負數範圍

把二進位最左邊的1個byte作為正負數符號,0表示正整數,1表示負數,因此有1個bit會變成正負符號, 8 bit中,只能用剩下7 bit存放數值,因此正數範圍變成$2^7 - 1$,減1代表扣掉0這個數字。

正整數

正整數二進位表示方式,最左邊的第1個bit為0,代表正整數。

以下是最大正整數,減1代表扣掉0這個數字。

byte bit 科學記號法
1byte 01111111 $2^7-1 = 127 $
2byte 01111111 11111111 $2^7 * 2^8 -1= 2^{7+8}-1 = 2 ^{15}-1 = 32767$
3byte 01111111 11111111 11111111 $2^7 * 2^8 * 2^8-1 = 2^{7+8+8}-1 = 2 ^{23}-1 = 8388607 $
4byte 01111111 11111111 11111111 11111111 $2^7 * 2^8 * 2^8 * 2^8-1 = 2^{7+8+8+8}-1 = 2 ^{31}-1 = 2147483647 $

負數

最左邊的第1個bit為1,代表負數,以下為最小負數。

byte bit 科學記號法
1byte 10000000 $-2^7 = -128 $
2byte 10000000 00000000 $-2^7 * -2^8 = -2^{7+8} = -2 ^{15} = -32768$
3byte 10000000 00000000 00000000 $-2^7 * -2^8 * -2^8 = -2^{7+8+8} = -2 ^{23} = -8388608 $
4byte 10000000 00000000 00000000 00000000 $-2^7 * -2^8 * -2^8 * -2^8 = -2^{7+8+8+8} = -2 ^{31} = -2147483648 $

正負數範圍

占用Byte數量 正負數範圍 科學記號法
1byte -128 至 -1 ~ 0 至 127 $-2^7$ 至 $2^7 - 1$
2byte -32768 至 -1 ~ 0 至 32767 $-2 ^{15}$ 至 $2 ^{15} - 1$
3byte -8388608 至 -1 ~ 0 至 8388607 $-2 ^{23}$ 至 $2 ^{23} -1$
4byte -2147483648 至 -1 ~ 0 至 2147483647 $-2 ^{31}$ 至$2 ^{31} - 1$

unsinged正整數

unsigned代表沒有符號,所以只有正整數,不會有負號。

占用Byte數量 正數範圍
1byte 0~255
2byte 0~65535
3byte 0~16777216
4byte 0~4294967295

results matching ""

    No results matching ""