标题:[求]二进制的加法、乘法、除法程序
取消只看楼主
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
 问题点数:0 回复次数:9 
[求]二进制的加法、乘法、除法程序
如题。谢谢!
搜索更多相关主题的帖子: 二进制 除法 乘法 加法 
2008-09-21 15:51
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
我是问的二进制数的加法程序应该如何编写,里面涉及进位的不会。
2008-09-21 16:05
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
是的,但我现在是要编一个这样的程序出来,有别的用处。还有二进制的乘法、除法等,楼上的知道的话,麻烦赐教了。
2008-09-21 16:19
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
比如说:输入a,b  (a,b都是二进制的 a=am…a0,b=bn…b0)
        输出c     (c=a+b 当然c也要是二进制的)
2008-09-21 16:24
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
其实都可以了,就算是16位的无符号数吧,0<=a,b<=65535.
2008-09-21 16:34
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
谢谢!
2008-09-21 17:50
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
看不懂  
for(i=0;i<strlen(ch);i++)
    {
        x+=(ch[i]-48);
        x*=2;
    }这个是怎么实现两个数的相加的?怎么进位的呢?
2008-09-21 18:06
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
我的意思是输入的是十进制的数,通过程序先转换成二进制的,然后再用二进制的加法。
2008-09-22 20:20
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
加法 BN_Add
输入:a,b
输出:c=a+b
1.  c=0
2.  for i=0 up to RSA BNwordlen
  2.1  carry=a[i]+b[i]+carry
  2.2  c[i]=(word)carry
  2.3  carry=carry>>32
3.  end for
4.  c[i]=carry
5.  return
乘法
输入:a,b  a=am…a0,b=bn…b0
输出:c=a*b
1.  c=0
2.  carry=0  unsigned int 64
3.  for i=0 up to m
  3.1 for j=0 up to n
    3.1.1 carry=carry+ai*bj
    3.1.2 c[i+j]=(word)carry+Ci+j
    3.1.3 carry=carry>>32
  3.2 end for
4.  end for
5.  return c
上面是二进制数的加法和除法的算法,我没看懂,请高人指点一下哦,越详细越好。谢谢啦!
2008-09-22 22:57
yzwang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-21
得分:0 
你说的我大体上都知道,就是具体的细节不明白,比如
(word)carry   carry=carry>>32是什么意思呢?我很菜的,望解释的更详细些,谢谢!
2008-09-23 12:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-234384-1-1.html




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

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