在C语言中,整数是可以带符号的(有符号,signed)或不带符号的(无符号,unsigned)。这两种类型的整数在内存中以二进制形式表示。并使用不同的模式。
有符号数(Signed Numbers)
有符号数是来表示正数、负数、0的整数类型。在内存中,有符号数使用最高位(通常是符号位)来表示正负。如果最高位为0,表示这个数是正数或0,如果最高位为1,表示这个数是负数。其余位用于表示数值本身。
举例:例如一个8位有符号整数可以表示的范围是 -128 ~ 127 。这是因为1位用于表示符号(正或负),剩下的7位
注意:有符号位是默认的,在C语言中,基本整数类型如int,short,long默认为有符号数,除非明确指定为无符号。
举例:
signed int num = 12;//标准有符号
int num == 12;//省略signed关键字
无符号数(Unsigned Numbers)
无符号数是只能表示非负整数的数据类型。在内存中,无符号数不使用符号位,所有位都用于表示数值。因为,无符号数的范围比有符号数的范围更大。
注意:在C语言中,通过关键字后添加 unsignet 。来指定无符号类型,如 unsigned int、unsignedshort..
举例:例如一个8位无符号整数可以表示的范围是 0 ~ 255 。这是因为所有8位都用来表示数值,没有符号位。
unsigned int num =12;//标准无符号位写法