求教C语言二级题

答案是A,0逻辑取反为什么是-1... 答案是A,0逻辑取反为什么是-1 展开
 我来答
与子如初见
2014-02-25 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:801万
展开全部
取反后是0x1111111111111111
最高位为1,所以是负数,负数存的是补码形式
负数求补码的方式为取反加一(最高位符号位不变)
所以用补码求负数的的方式就是减一取反,0x1111 1111 1111 1111 减一就是
0x 1111 1111 1111 1110
然后取反(符号位不会变)就是 0x 1000 0000 0000 0001
这就是求得的负数的值。
输出最高位是1,所以是负数,数值为1,所以为-1.
pardream941026
2014-02-25 · TA获得超过8217个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1351万
展开全部
0的2进制表示为0000 0000 0000 0000 (16位CPU, 32位64位CPU同样适用)
取反后变成 1111 1111 1111 1111,在计算机中,这个数字表示-1 (因为你的数值定义是int型)
所以输出结果是-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高楼寻缝
2014-02-25 · TA获得超过175个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:161万
展开全部
以32位平台为例:i的值是0,内部十六进制表示为00000000.
做取反运算~i后,i的值变成了FFFFFFFF。这个十六进制表示的正是-1这个数。
负数在计算机中的表示参见:http://www.01happy.com/computer-true-code-complement-code/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式