- tt白
-
比如过 char类型是8位的。按道理来说2的8次方为256。但在c语言中,是从0开始算的,也就是从0开始加,加256次。那么得出最高位为255.既2的8次方减1.同理,int的类型也是一样的。
- 蓦松
-
这是最大值,本来32位,去了一位负号位,31位。。。。。。。因为值是从0开始的。
~
~
- 黑桃花
-
是2的32次方减1吧!这个是unsigned int的极致;
- 穆武唐宁
-
32位,一位是符号位,正数的话,除过第一位符号位,有31个“0”“1”选择空,就会有2的31次方个数,这些数的范围是(正0)~(2的31次方-1),正数部分很好理解。
负数部分按正数的想法来的话,取值范围应该是(负0)~(负的2的31次方-1)
这么看来好像没什么问题,但是(正0)(负0)重复了啊啊
怎么办的,(负0)是这样的1000000000000....(省略)
就是这个(负零),其实就是(2的31次方),我们把它当作(负的2的31次方),也就是它的负号被用作表示数字的实体了....
来自大连理工大学学渣的回答。
- 北营
-
第一位符号位为0,0后面31个1即0111111111111……1换算成10进制为1×2的零次方+1×2的一次方+……+1×2的31次用等比数列求和公式为2的31次方-1
- 二分好久没看
-
int数据类型属于整型,一个int数据在内存中占有4个字节(32位),即其存储的是整数,1、2、3、4........其中也包括负数。表示数据的正负需要一位,首位是0表示正数,首位是1表示负数,那么就只剩下31位去真正表示数据了。
我们举个例子:
假设我们的int类型只有2位的二进制位,那么它能表示-1,0,1;别忘了,这可是两位二进制,理论上应该至少表示4个数,所以,为了能让内存充分利用起来,应当有-2,-1,0,1或者-1,0,1,2。但是,计算机科学家们显然是选择了-2,-1,0,1这种做法。
-2的二进制是11;
-1的二进制是10;
0的二进制是00;
1的二进制是01.
下面我们再来说说计算机中真正的int数据类型,按照上面的例子来类推,32位的int数据所能表示的数值当是负的2的31次方~2的31次方减1.