欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

C语言中数据int的取值范围为多少?

程序员文章站 2022-03-07 16:31:24
...

C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。int型数据是一个有符号的整型数据,其最高位为符号位(0表示正,1表示负)。

C语言中数据int的取值范围为多少?

C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。

详细解答过程,以两个字节为例:

在C中,int型数据是一个有符号的整型数据,其最高位为符号位(0表示正,1表示负)。

1个字节等价于8个二进制位,在很多计算机系统中,通常采用补码来表示带符号的数(补码系统)。

原码:最高位为符号位(0表示正,1表示负),其他位按照一般的方法来表示数的绝对值。

反码:对于一个带符号的书来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。

补码:正数的补码与其原码相同,负数的补码为其反码在最低位加1。

两个字节,所以,二进制原码最大为0111 1111 1111 1111 = 2^15 - 1 = 32767。

最小为1111 1111 1111 1111 = - (2^15 - 1) = -32767。

原码中0的表示有正负之分[+0]原 = 0000 0000 0000 0000;[-0]原 =1000 0000 0000 0000。

所以二进制原码表示时,范围是 -32767 ~ -0和0~32767,因为有两个0,所以不同的数值个数一共有2^16 - 1个。

而计算机采用而进驻补码存储数据时,0的表示是唯一的:[+0] 补= [-0] 补= 0000 0000 0000 0000

此时正数编码不变,从0000 0000 0000 0000 ~ 0111 1111 1111 1111依然表示0 ~ 32767。

负数表示需依照补码规则,即-32767的补码为1000 0000 0000 0001。

所以补码中会比原码多一个编码出来,这个编码就是1000 0000 0000 0000,因为任何一个原码都不可能在转化成补码时变成1000 0000 0000 0000,所以人们规定1000 0000 0000 0000这个补码编码为-32768。

结论:int型数据占两个字节时,可表示2^16种变化,最高位为符号位,所以正负有2^15中变化,因为0也占一种,因此正负数的最大值并不对称,即该int型数据取值范围为-32768 ~ 32767。

C语言中数据int的取值范围为多少?

扩展资料:

int使用方法:

定义方法:

int i;//定义整形变量i

int i=1;//定义整形变量i并初始化为1

定义常量:

const int i;//编译错误,因为常量需要给予一个初值

const int i=1;//定义常量i,值为1

Java定义常量:

final int i=1;//定义常量i,值为1

推荐教程:《C语言

以上就是C语言中数据int的取值范围为多少?的详细内容,更多请关注其它相关文章!