C语言转码和补码的问题

就是intx=13;intz=~x;(~是按位非运算符,也称为1的补位运算符)然后输出的z是-14;但是书上写的是14,11110010是-14是怎样算出来的,并且书上说... 就是int x = 13;int z = ~x;(~是 按位非运算符,也称为1的补位运算符)然后 输出的z是 - 14;但是书上写的是14,

11110010是-14是怎样算出来的,并且书上说的是:在负整数的2的补码中,值11110010是14.
我现在的问题是,1:负整数的2的补码是什么?
2 按位非运算符算出的数字是怎样输出的?(就是题目为什么是这样的,如果用16进制输出则是FFFFFFF2D)
3:是因为负整数的原因吗?比如按位非运算符会导致 int 13 = 00001101,(因为是int 型所有只有8位)取反码就是11110010,但是11110010不是14啊?更不是-14了?补码是11110011?我的电脑是win7旗舰版64位,ide用了2个,一个是orwell dev cpp 5.71 64位编译器选择是tdm gcc 4.8.1 64bit release,另一个是 pellesc 8.00 Release Candidate 6. 64位,输出的结果都是-14,还是因为int类型?
展开
 我来答
White_MouseYBZ
2014-10-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6714万
展开全部
整数在计算机中都是按补码对待的。11110010→符号位为1时不变,其余各位取反→10001101→末尾加1→10001110→这就是-14的原码。
Jack_Break_BD
推荐于2016-01-03 · 超过14用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:21.8万
展开全部

11110010是-14是怎样算出来的

第一个1是表示负数.补码就是原码全位取反加一.那么这个数减一取反就是11110010-1=11110001取反为00001110.

  1. 负整数2的补码

    正整数2:00000010, 取反加一,11111101+1=11111110.高位置1表示负数.

  2. 按位非

    3原码:00001101.按位非:11110010,第一位正负位也被处理在内,以补码解码自然就是-14.书上也有印刷错误.

  3. 见2.

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式