同樣是16位二進位制的整數,
short int x;
unsigned short int y;
有符號整型 要 消耗 1 位 用來做符號,剩下的15位 用來存數值。
與無符號整型 不需要符號位,16位 用來存數值。
所以他們表示的數值範圍不同。
有符號整型,正數用原碼錶示,負數用補碼錶示,最小負數(絕對值最大)是 1000 0000 0000 0000 (16進位制 0x8000), 最大正數 0111 1111 1111 1111 (16進位制 0x7fff).
無符號數 用原碼錶示,最小 0, 最大 1111 1111 1111 1111 (16進位制 0xffff).
用 C 語言打印出數值來:
printf("I: %d %d\n", (short) 0x8000, (short) 0x7fff);
printf("U: %u ", (unsigned short) 0xffff );
I: -32768 32767
U: 65535
同樣是16位二進位制的整數,
short int x;
unsigned short int y;
有符號整型 要 消耗 1 位 用來做符號,剩下的15位 用來存數值。
與無符號整型 不需要符號位,16位 用來存數值。
所以他們表示的數值範圍不同。
有符號整型,正數用原碼錶示,負數用補碼錶示,最小負數(絕對值最大)是 1000 0000 0000 0000 (16進位制 0x8000), 最大正數 0111 1111 1111 1111 (16進位制 0x7fff).
無符號數 用原碼錶示,最小 0, 最大 1111 1111 1111 1111 (16進位制 0xffff).
用 C 語言打印出數值來:
printf("I: %d %d\n", (short) 0x8000, (short) 0x7fff);
printf("U: %u ", (unsigned short) 0xffff );
I: -32768 32767
U: 65535