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类型? 展开
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类型? 展开
2个回答
展开全部
11110010是-14是怎样算出来的
第一个1是表示负数.补码就是原码全位取反加一.那么这个数减一取反就是11110010-1=11110001取反为00001110.
负整数2的补码
正整数2:00000010, 取反加一,11111101+1=11111110.高位置1表示负数.
按位非
3原码:00001101.按位非:11110010,第一位正负位也被处理在内,以补码解码自然就是-14.书上也有印刷错误.
见2.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |