C语言中整型的问题.问①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,为什么要-2的“31”次方,而不是“32”次方呢?问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/31 08:33:32
C语言中整型的问题.问①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,为什么要-2的“31”次方,而不是“32”次方呢?问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)
C语言中整型的问题.
问①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,
为什么要-2的“31”次方,而不是“32”次方呢?
问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)”中,
为什么要2的“32”次方,而不是“31”次方呢?
C语言中整型的问题.问①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,为什么要-2的“31”次方,而不是“32”次方呢?问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)
①:“long 4字节(32位)取值范围-2的31次方~(2的31次方-1)”中,为什么要-2的“31”次方,而不是“32”次方呢?
答:因为负数的最高位是符号位,所以在计算范围的时候要将符号位去掉.所以负数据的取值是-2的31次方.
问②,“unsigned long 4字节(32位)取值范围0~(2的32次方-1)”中,为什么要2的“32”次方,而不是“31”次方呢?
答: 无符号整型是没有符号位的,但也不能表示负数,因为最高位的符号位只能表示数字,这样我们在计算范围时步需要考虑符号位.
但为什么是2的32资方-1而不是2的32资方呢.因为在计算无符号的范围时我们要将0这一个数据去掉,因为0是没意思的一个数,所以需要去掉. 其实你可以想像,为什么我们在建立数组时,定义的是10,但数据下标是从0开始,所以在实际运用数组时,数组的最大下标只能标识为9(即10-1),正是因为要将0去掉,所以在计算类型表示范围时也要将0去掉,这就需要-1.