int 类型取值范围的困惑int类型在 内存占16位,取值范围是(-2的15次方) (2的15次方-1)我想问的是 取值

int 类型取值范围的困惑
int类型在 内存占16位,取值范围是(-2的15次方) (2的15次方-1)
我想问的是 取值范围为什么不是(-2的15次方+1) (2的15次方-1)?
最小值(-2的15次方)是怎么来的?请用补码形式讲解
1楼的 用这种角度考虑~你的回答我同意.
2楼的 最大的正数就是01111111 11111111
但这不能说明最小的负数就是10000000 00000000
还有10000000 00000000=-(01111111 11111111 +1)=-2^15 我没看懂
但也请你们看下我的想法.
负数的补码 是其的绝对值取反加一,符号位变成1.
那(-2的15次方)的补码是 |-2^15 |取反加一,符号位变1.
但正整数最大值是 2^15 -1,|-2^15 |大于2^15 -1.
所以|-2^15 |的源码怎么来的,二进制是多少.
lqlqkskl 1年前 已收到1个回答 举报

dididi1997 幼苗

共回答了16个问题采纳率:81.3% 举报

在内存中,正数的原码和补码是一样的,而负数的补码为其绝对值的原码按位取反后加1.
对于补码是0000000000000000时,对应的值为0
补码范围是0000000000000001-0111111111111111,对应的值为全部正整数,即1-2^15-1.
补码范围是1000000000000001-1111111111111111,对应的原码是100000000000001-111111111111111,值的范围是-1~-(2^15-1).
还有一个数是100000000000000,它不能使用补码计算公式进行计算的.是计算机内部直接用它来表示-2^15.你可以参考一下:http://blog.csdn.net/aiirr/archive/2007/12/28/1998545.aspx

1年前

6
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 1.507 s. - webmaster@yulucn.com