C语言中int类型和存储范围问题。

int型为有符号的整形,对于有符号数,计算机中表达时,最高位约定为符号位,当符号位为0时为正数,符号位为1时为负数。

以16位cpu为例,正数上限为:二进制数0111111111111111转换为十进制为32767,负数上限为:二进制数1000000000000000转换为十进制为-32768。
以32位cpu为例,正数上限为:二进制数0111 1111 1111 1111 1111 1111 1111 1111转换为十进制为2147483647,负数上限为:二进制数1000 0000 0000 0000 0000 0000 0000 0000转换为十进制为-2147483648。

问题:
1.为何负数上限不是二进制数1111 1111 1111 1111 1111 1111 1111 1111转换为十进制数为-4294967295呢?
2.那么什么是无符号整型数?

在计算机中,整数类型是以补码形式存储的。32位二进制全部都是1的补码,用来表示-1。关于补码的知识,请你另行查找资料。
无符号整数是用来存储非负整数的一种数据格式,以四位二进制为例,他能表示的最小值是0000表示0,最大值是1111对应的是十进制15。追问

请问怎么写无符号整型?

追答

无符号整型 unsigned int

unsigned long
%u

温馨提示:答案为网友推荐,仅供参考
相似回答