| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 961 人关注过本帖, 1 人收藏
标题:算x/y&~z
只看楼主 加入收藏
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
  得分:0 
回复 10楼 wmf2014
态度赞一下
"严重道歉"言重了
作为有强迫症的我
遇见明显的错误实在忍不住要指出一下
对事儿不对人
不要放在心上

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2015-01-08 09:32
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
  得分:0 
以下是引用蓝莓在2015-1-7 10:47:19的发言:

main()
{ int  x=3, y=2,z=1;
printf("%d\n",x/y&~z);
}
 
我的思路如下:
3/2=1
1&~1(1是正数,反码补码都不变)
    00000001
  & 00000001
 等于      1
 
但是答案等于0 = =
为什么答案等于0?
答案如果等于0,那么不就是应该是
00000001
11111110
但是1不是正数吗?正数的反码补码都不变啊

没有哪本书或者哪个老师说过“正数的反码不变”,建议再看下二进制的内容。

[qq]949654600[/qq]
2015-01-10 14:23
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
  得分:0 
《计算机导论》
附件: 您没有浏览附件的权限,请 登录注册
2015-01-12 20:07
wmf2014
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:185
帖 子:1805
专家分:10126
注 册:2014-12-6
  得分:1 
回复 13楼 蓝莓
这是哪里的教材呀?我真没看懂。
任何数都有反码吧。至于补码,应该就是针对负数来说的,数字电路设计减法电路所用元器件比较多,如是就变成补码后改成加法运算,所谓补码就2^(字长)-这个数,比如一个字节字长8,那么50的补码就是2^8-50=256-50=216,216就是50的补码,教科书上通常会说是取反加一,结果是一样的。
举个简单的例子验证下:5-3=0101-0011=5+(16-3)=5+13=0101+1101=10010=(舍掉进位)0010=2(红色部分是二进制,其他10进制)
可能我基础不行,好多知识未理解透吧。

能编个毛线衣吗?
2015-01-12 20:59
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
  得分:0 
回复 14楼 wmf2014
我已经搞不懂了(+﹏+)~狂晕
这是我们《计算机导论》课的书上写的,我也问过老师,老师很斩钉截铁地说正数的反码就是它本身……然后我还是去网上查查资料吧
2015-01-12 21:14
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
  得分:0 
……反码和取反不一样是吗?
~1是意思是取反,而不是要它的反码是吗?
2015-01-12 21:22
wmf2014
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:185
帖 子:1805
专家分:10126
注 册:2014-12-6
  得分:10 
仔细看了资料,反码!=取反,原码、反码、补码都是计算机内数值的表示方法。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。是人为规定的,多数计算机不采用反码表示数值。百度:反码

能编个毛线衣吗?
2015-01-12 21:45
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
  得分:0 
回复 17楼 wmf2014
好的呢,谢谢^-^
2015-01-13 19:25
快速回复:算x/y&~z
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038233 second(s), 7 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved