| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:遇到一个基础性的问题(关于原码,补码的相关问题)。求解!
只看楼主 加入收藏
shentao
Rank: 1
来 自:安徽省六安市
等 级:新手上路
帖 子:34
专家分:8
注 册:2012-10-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:21 
遇到一个基础性的问题(关于原码,补码的相关问题)。求解!
这句话是我从谭浩强《c程序设计》第四版上看到的。他说16位(有符号数)二进制数用补码表示最大数是:0111111111111111,这个我可以理解。但是他又说16位二进制数用补码表示最小值为:1000000000000000,这我就不能理解了。
  我的想法是:最大的数加负号不就是最小的数了吗?因此16位最大值是+11111111111111,加上负号便是-111111111111111,然后转换成补码便是1000000000000001了。   
  我想我肯定是我错了,但是就是看不明白谭老爷子这句话。
请高手解答。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
如果有书的同志,请参阅:p44页下方的说明区域。
搜索更多相关主题的帖子: 最大的 二进制 老爷子 最大值 
2012-11-20 21:32
shentao
Rank: 1
来 自:安徽省六安市
等 级:新手上路
帖 子:34
专家分:8
注 册:2012-10-13
收藏
得分:0 
求解。。。。。

C语言新手……努力中!
2012-11-20 21:32
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
呵呵,这样告诉你把。在c语言中为了不浪费 在没有补码的情况下1000000000000000和0000000000000000都是表示了0
所以,在补码情况下都有一个循环 最小的数加1加1在加1。。。最后变成最大的数之后再加1就又回到了最小的数。

0000000000000000+1=000000000000001;
0000000000000001+1=000000000000010;
            
            
            
0111111111111111+1=100000000000000;
还不明白就努力看补码的定义+自己举例吧。。

WE GO
2012-11-20 21:40
shentao
Rank: 1
来 自:安徽省六安市
等 级:新手上路
帖 子:34
专家分:8
注 册:2012-10-13
收藏
得分:0 
还是看不明白。能再详细点吗?你的意思说在c语言中补码的最大数加1便是最小数码?
例如:0111111111111111+1=1000000000000000;???

C语言新手……努力中!
2012-11-20 21:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
回复 4楼 shentao
弄那么精细干嘛
我觉得进制的问题
1、会用笔算各种进制之间的转化
2、会写各种进制转化的函数

即可

DO IT YOURSELF !
2012-11-20 21:49
shentao
Rank: 1
来 自:安徽省六安市
等 级:新手上路
帖 子:34
专家分:8
注 册:2012-10-13
收藏
得分:0 
唉,亲你不知道,那本书我从0页开始到43页就没有不懂的。原本打算要把谭老爷子的书全部啃下去。可是现在就遇到难题了。问了三个老师,有两个老师不知道,还有一个老师说不清楚!!急呀!!

C语言新手……努力中!
2012-11-20 21:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
呵呵
个人主意各有不同,你继续啃  祝你好运

DO IT YOURSELF !
2012-11-20 21:54
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:15 
回复 4楼 shentao
是滴,不过你要记住
⑴正数的补码
  与原码相同。
⑵负数的补码
  负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
你要懂这样定义补码有什么好处(特点)

WE GO
2012-11-20 21:57
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
回复 6楼 shentao
你可以随便测试,例如
-1+1=0
即-1的补码
1111111111111111
1的补码
0000000000000001
-1+1=111111111111111+0000000000000001=0
等等,你自己玩玩就知道了

WE GO
2012-11-20 22:00
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
至于最小为什么这样写,这是有一个故事的,它要感谢印度人的思维,具体我也忘了,但是我知道在哪里,你在百度搜韩顺平java教学视频,就在前2讲应该,他说的很清楚的。我当时就豁然开朗了,你应该也能明白。学长只能帮你到这了

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-20 22:04
快速回复:遇到一个基础性的问题(关于原码,补码的相关问题)。求解!
数据加载中...
 
   



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

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