有关C语言中int型数据的取值范围的问题

int型的数值范围为-32768~32767,且int型数据占有2个字节,也就是16位,但是,第一位是0表示正,是1表示负。但是这个-32768即二进制的01111111... int型的数值范围为-32768~32767,且int型数据占有2个字节,也就是16位,但是,第一位是0表示正,是1表示负。
但是这个-32768即二进制的0111111111111111,32767即二进制的1111111111111111.是怎么算的啊?
我算到15位,整数是32767啊。如果0为正的话。那怎么用-的32768表示0111111111111111呢??如果1为负的话。那为什么又用正的32767表示1111111111111111呢?不理解。想了两天了,找不到答案。各位大侠帮帮忙吧!!
谢谢大哥啊!!不过,补码在哪些书里有介绍啊???我不太了解补码!!!
展开
 我来答
ping3108
2009-02-04 · TA获得超过551个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:137万
展开全部
是这样的,现在计算机中表示有符号数用的几乎都是2的补码表示法(two's complement),像C语言中的int、long等就是用这种表示法。而表示无符号整数(即非负整数,如unsigned int)用的是原码表示,计算其十进制真值时直接按权展开就行。

将用2的补码表示的二进制转化成十进制有好几种方法,最规范的一种是按下面的公式计算:

x[n-1]×(-2^(n-1)) + x[n-2]×2^(n-2)+ … + x[1]×2^1 + x[0]×2^0

其中n表示二进制位数,x[n-1]表示第n-1位数(从0开始,从右往左数),注意最高位是乘以(-2^(n-1)),有负号,其它项无负号。

比如设(1111)B用2的补码表示,上面的公式计算其十进制真值的过程是:

........(1111)B =1×(-2^3) + 1×2^2 + 1×2^1 + 1×2^0
................= -8 + 4 + 2 + 1
................= -1

所以(1111)B = (-1)D

实际上,2的补码表示的16位二进制,其十进制真值如下:

……二进制……………………十进制
0000 0000 0000 0000............0
0000 0000 0000 0001............1
0111 1111 1111 1110............32766
0111 1111 1111 1111............32767
1111 1111 1111 1111............-1
1111 1111 1111 1110............-2
1000 0000 0000 0001............-32767
1000 0000 0000 0000............-32768

所以楼主在上面写的“32767即二进制的1111111111111111”是不对的,(1111 1111 1111 1111)B表示十进制数的 -1。

2的补码表示法(其它表示法还有1的补码表示法、移码表示法等)是在计算机组成原理课程中讲的。
要了解更多2的补码表示法,楼主可以Google中搜索“Two's complement”,或者参考:

http://tieba.baidu.com/f?kz=278455703
516790405
2009-02-04 · TA获得超过2345个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:245万
展开全部
计算机内的数据都是补码形式的。因为正数的补码和原码相同,所以正数存放的是他的原码,负数是存放的他的补码(补码求法:取负数的绝对值写成二进制形式,按位取反,加1,就得到了他的补码),这样是为了计算机运算时的简单。【-32767】补=10000000 00000001 【32767】补=【32767】原=01111111 11111111
计算-32767+32767时计算机内的运算就是:10000000 00000001+01111111 11111111=00000000 00000000
是不是简单很多呢?这下明白了吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaocl112102
2009-02-05 · TA获得超过342个赞
知道答主
回答量:496
采纳率:0%
帮助的人:0
展开全部
最前面的一位是表示它的符号!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式