| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 895 人关注过本帖
标题:[求助]关于乘法的底层操作的问题
只看楼主 加入收藏
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
 问题点数:0 回复次数:5 
[求助]关于乘法的底层操作的问题

//int x, y ;

y = x * (-56) ;

如果只使用 +, -, << 对x操作, 得出和上面等价的结果, 如何?

我只知道,如 x*3 对应 x<<1 + x,

负数如何办?

搜索更多相关主题的帖子: 乘法 底层 
2006-03-01 15:18
bullbatLT
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-1-13
收藏
得分:0 
x*3 与 x<<1 + x的结果不一样,结果与(x<<1) + x才是一样。负数应该和正数差不多吧?
y = ~((x << 1) + x) + 1;

2006-03-01 15:57
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

第一个谢谢提醒,

不用补,有什么办法?


2006-03-01 19:19
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
结束,不好意思,题没领会清楚,

2006-03-02 09:58
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
我是来给大家泼点冷水的. 这样的问题其实没有多大研究的必要. 如果你对计算机底层的运算感兴趣, 那么你该看看计算机结构方面的书, 还有就是数字电路的书籍.

关于乘法的实现, 计算机不是通过移位实现的, 而是由乘法器实现的. 我们知道, 计算机使用的是2进制, 也就是说只有 0 和 1, 但是做法和10进制的乘法是相同的, 举个简单的例子来讲, 对于10进制 13 * 12 我们先用 13 * 2 得 26
13 * 1 得 13 当然, 13 中的 3 是 和 26 中的 2 对齐的, 然后再作加法, 就得到 156 了.

对于二进制, 做法是一样的. 为此有专门的实现电路, 当然在乘法电路中要用到加法器,确切的讲是全加器.

至于负数, 是通过的补码 + 1的办法得到的.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-03-02 11:42
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

赶紧说明一下,这个是在看的计算机系统的章后的测试,语言能力不行,没领会清.
kai的意思我明白,学习要抓住本质,要点.这盆冷水泼的也不错.


2006-03-02 14:15
快速回复:[求助]关于乘法的底层操作的问题
数据加载中...
 
   



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

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