C语言int的取值范围
2个回答
展开全部
二进制数在计算机内存储的是其补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取反后加1
比如:
1=(0001)补=(0001)
-1=(1001)补=(1111)
计算机存储-1就是存储的1111
因此
当int表示范围为16位时,可以表示的最大负数为:
10000...0000(后面有15个0)
相当于-0
但这其实是-32768=110000...0000(第一位符号位,后面有15个0)的补码表示
可以理解为16位的int足可以表示-32768的补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取反后加1
比如:
1=(0001)补=(0001)
-1=(1001)补=(1111)
计算机存储-1就是存储的1111
因此
当int表示范围为16位时,可以表示的最大负数为:
10000...0000(后面有15个0)
相当于-0
但这其实是-32768=110000...0000(第一位符号位,后面有15个0)的补码表示
可以理解为16位的int足可以表示-32768的补码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实c语言本身并没有对int
float
char的取值范围进行限制..你可以看看c
standard(c语言标准)..它上面是没有规定范围的..至于这个范围..他是给据不同的编译器来说的..我们知道c语言最早的编译器是borland公司的.其中影响最广的是tc2.0..至今还在使用者..由与再开发编译器的时候的硬件方面的限制..所以他就只好吧int的范围弄到-32768~32767
等等...要想知道他的范围,是必须得说明编译环境的..其实我们的很多老师再教学的过程当中,并没有把这点说的很详细...希望对你有所帮助
float
char的取值范围进行限制..你可以看看c
standard(c语言标准)..它上面是没有规定范围的..至于这个范围..他是给据不同的编译器来说的..我们知道c语言最早的编译器是borland公司的.其中影响最广的是tc2.0..至今还在使用者..由与再开发编译器的时候的硬件方面的限制..所以他就只好吧int的范围弄到-32768~32767
等等...要想知道他的范围,是必须得说明编译环境的..其实我们的很多老师再教学的过程当中,并没有把这点说的很详细...希望对你有所帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询