c语言中,short(0xffff)等于–1。那我定义变量 a 的时候,我定义的不是原码么?

那我定义a=short(–0xffff)时,那我定义时,定义的是补码么?... 那我定义a=short(–0xffff)时,那我定义时,定义的是补码么? 展开
 我来答
wangnasa
2012-09-26 · TA获得超过777个赞
知道小有建树答主
回答量:732
采纳率:100%
帮助的人:692万
展开全部
是这样的 你定义的 0xffff 不是补码 是你要存的负数-32767
因为是负数所以在内存中以补码方式存放
所以0xffff 转成补码
取反码 0x8000
补码再加1 =0x8001 -1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eagle71106
2012-09-28 · TA获得超过378个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:151万
展开全部
补码是数据存储在内存中的格式,不是你写的格式。所有数据在计算机中都是以补码的形式存储的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1162601897
2012-09-26
知道答主
回答量:9
采纳率:0%
帮助的人:4.2万
展开全部
在计算的内存中的数据:都是以补码的形式存储,但是和你的定义无关,他会将你现在的数据转换成补码进行存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-26
展开全部
区分两个概念:数在内存中的存储形式及数在屏幕上的显示形式。
0xffff是-1在内存中的存储形式,是-1的补码;-1是数在屏幕上的显示形式。
short int a=0xffff; //将十六进制0xffff赋给变量a。
printf("%d",a); //这儿将输出-1,因为0xffff以%d格式输出时,被认为是数的补码,对应的数为-1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式