当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: "聚集"的意思好比是电脑是由主机,显示器,键盘等组成的. "组合"的意思好比是树它是有叶子,根等组成的关系比较强,少了谁都不成. 但是在实现过程中该如何区别实现"聚集"和"组合"? "组合"可以实现成类的属性或者还有其它?"聚集"又该如何实现呢? ......
    摘要: 我一般都是连接控制台,手动开启,可是现在想要开机的时候自动加载,不知道应该如何做,谢谢。 ......


如何只用位运算就能计算除法

例如a/10,如何只用位运算就能计算

NO.1   作者: xiaocai0001

有这种方法么?  
   
  期待中...  
   
  在组成原理上看过一个机器上实现除法的算法叫:不恢复余数的二进制除法

NO.2   作者: jp1984

寄存器中   乘2为左移,除2为右移。如果除数为2的整数幂则可以通过移位来完成。  
    这个是常识。对2的非整数幂来说   ,运算器有相应的除法算法。  
     
    问搂主,在计算机最底层一切运算不都是位运算吗?

NO.3   作者: liangbch

 
      这个不难理解呀,为了便于说明,写一个例子代码:  
      计算:   dx   :ax     /   bx   ,且   dx<bx   ,计算结果dx:余数,ax   商  
   
        mov     cx,16   ;结果为16位,循环16次  
  start:  
   
      shl   ax,1   ;被除数左移1位  
      rcl   dx,1  
   
      cmp   dx,bx   ;试商  
   
      jb     next   ;当前商为0,不处理  
   
      sub   dx,bx   ;减去阶数  
      or     ax,1  
   
  next:  
      loop   start  
   
      基本思想:   我们可以回想阶法的手算运程:  
      1。试商:   将被除数和除数左对齐,看看被除大于等于除数的几倍,得到   当前商,因为是十进制数,故   当前商   为0-9.  
      2.   将被除数   减去   除数的   当前商   倍.  
      3.   被除数   左移1位,转第一步,继续试商。  
       
       
      然后   看二进制除法,和十进制除法手算类类似,二进制除法也需3步,不过更加简单。  
      1.   试商,因为是二进制数,故   当前商   为0-1.   被除数大于除数,当前商   置1,小于除数,当前商   置0  
      2。被除数   减去   除数的   当前商   倍。当前商为1,被除数减去除数。否则,被除数不变。  
      3.   被除数   左移1位(二进制的移位),继续   第1步.    
 

NO.4   作者: mathe

通常做法首先将除法转换为乘法:  
  比如x/10可以转化为:  
  ((x*1717986919)>>34)-(x>>2)  
  至于要全部转化为位运算,乘法转化为位运算不难

NO.5   作者: yelling)

除法的硬件实现就是只用位运算实现的


    摘要: 就如学c++一定要看c++ primer 和c++程序语言设计第三版(c++之父那本),effective c++,more effective c++这样的经典书。 如果想从事j2ee开发要学习什么知识。要看什么书?学习步骤又是从那一个阶段过渡到那一个阶段。先学什么后学什么呢? 如果想从事j2me开发又要学习什么知识,看什么书? 请各位java高手给一些自己的学习经验指导一下小弟,小弟在......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE