C的int数据类型要占17个Bit位?
今天突然发现一个问题,搞得我头都大了。说出来都不相信,就是int的数据的最小值。
大家都知道,int用16个bit位表示数据,如果是有符号的则只有15位才能表示,则最大值是2^15-1。
那么最小值是多少呢?
大家也知道,就是-32768,怎么来的?
负的2的15次方,是吧。
问题来了,负的2的15次方,的原码是多少?1,1000,0000,0000,0000,注意我写的是原码,这用了17位空间。
而负数在计算机中是以补码形式存放的,负的2的15次方的补码应该是:1000,0000,0000,0000,而这里正好用了16位。
其实这里不止16位,我把前面的0省略了0,1000,0000,0000,0000。
那int类型的数据不是用了17个bit位吗?
大家帮我看看,我到底错在哪里了?
[此贴子已经被作者于2006-2-23 16:34:49编辑过]