同样是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
匿名回答于2024-05-22 23:50:03
是的,int是一种数据类型,它可以包括有符号整型和无符号整型。有符号整型可以表示正数、负数和零,而无符号整型只能表示非负数(即正数和零)。
有符号整型的范围取决于编程语言和计算机体系结构,通常是在-2^(n-1)到2^(n-1)-1之间,其中n是整型的位数。无符号整型的范围是从0到2^n-1,其中n是整型的位数。在使用int时,需要根据具体的需求选择有符号整型还是无符号整型。
匿名回答于2024-05-17 03:31:51