c语言整数的范围

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:45:32
在8位位宽中,为什么整数的范围是-2^7~(2^7-1) 正整数要比负整数小一呢?

因为它用了最高一位来作为符号位,0 xxxxxxx与1 xxxxxxx表示的数字个数是一样的,0 0000000来表示0,而1 0000000则表示-1,那么正数会比负数少一个,因此正整数会比负整数小一。

对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
[+0]原=0.000...0
[ -0]原=1.000...0

若原码小数的位数是8位时,其该数表示的最大值、最小值:
8位: 127/128,-127/128

而机器使用补码表示
机器中没有“+0”、“-0”之分,只有[0]补=0.000...0

若补码整数的位数是8位,其表示的最大值、最小值: -128 -- 127

C语言整型,一般分为char类型和int类型,不同的类型取值范围也不尽相同。在32位系统中:

char取值范围:-128~127

unsigned char取值范围:0~255

int取值范围:-2147483648~2147483647

unsigned int取值范围:0~4294967295


在c语言中可以通过C标准库中的limits.h头文件,来直接使用整型类型的最大值和最小值 。示例如下:

#include <stdio.h>
#include <limits>
int main()
{
printf("char取值范围:%d~%d\n",CHAR_MIN, CHAR_MAX );
printf("unsigned char取值范围:%u~%u\n",0, UCHAR_MAX);
printf("int取值范围:%d~%d\n", INT_MIN, INT_MAX);
printf("unsigned int