http://phper5.com/2009/04/02/%E4%BD%8D%E8%BF%90%E7%AE%97%E5%AE%9E%E7%8E%B0%E5%8A%A0%E6%B3%95.html 用位运算实现加法也就是计算机用二进制进行运算,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,在不考虑进位的基础上,如下
1.1 + 1 = 0
2.1 + 0 = 1
3.0 + 1 = 1
4.0 + 0 = 0
很明显这几个表达式可以用位运算的“^”来代替,如下
1.1 ^ 1 = 0
2.1 ^ 0 = 1
3.0 ^ 1 = 1
4.0 ^ 0 = 0
这样我们就完成了简单的一位数加法,那么要进行二位的加法,这个方法可行不可行呢?肯定是不行的,矛盾就在于,如何去
获取进位?要获取进位我们可以如下思考:
1.0 + 0 = 0
2.1 + 0 = 0
3.0 + 1 = 0
4.1 + 1 = 1
5.//换个角度看就是这样
6.0 & 0 = 不进位
7.1 & 0 = 不进位
8.0 & 1 = 不进位
9.1 & 1 = 进位
正好,在位运算中,我们用“<<”表示向左移动一位,也就是“进位”。那么我们就可以得到如下的表达式
1.//进位可以用如下表示:
2.(x&y)<<1
到这里,我们基本上拥有了这样两个表达式
1.x^y //执行加法
2.(x&y)<<1 //进位操作
我们来做个2位数的加法,在不考虑进位的情况下
1.11+01 = 100 // 本来的算法
2.
3.// 用推算的表达式计算
4.11 ^ 01 = 10
5.
6.(11 & 01) << 1 = 10
7.
8.//到这里 我们用普通的加法去运算这两个数的时候就可以得到 10 + 10 = 100
9.//但是我们不需要加法,所以要想别的方法,如果让两个数再按刚才的算法计算一次呢
10.
11.10 ^ 10 = 00
12.
13.(10 & 10) << 1 = 100
到这里基本上就得出结论了,其实后面的那个 “00” 已经不用再去计算了,因为第一个表达式就已经算出了结果。
继续推理可以得出三位数的加法只需重复的计算三次得到第一个表达式的值就是计算出来的结果。
c代码如下:
int Add(int a,int b)
{
int jw=a&b;
int jg=a^b;
while(jw)
{
int t_a=jg;
int t_b=jw<<1;
jw=t_a&t_b;
jg=t_a^t_b;
}
return jg;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/koala_bupt/archive/2009/07/26/4381803.aspx
分享到:
相关推荐
易语言位运算实现加法运算源码,位运算实现加法运算,ToSymbolInteger,Add
易语言位运算实现加法运算源码。@资源源码站。
易语言源码易语言位运算实现加法运算源码.rar
实现加法运算实现加法运算实现加法运算实现加法运算
用位运算实现加法也就是计算机用二进制进行运算,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,需要的朋友可以参考下
易语言位运算实现加法运算源码
实现进行加法运算,输入的数字存到数组里面,然后进行加法运算
利用java完成图形化用户界面实现加法运算,第一个加第二个当点击等号时在第三个文本框中显示相加之和
使用MFC编写的一个小程序,实现了加法的功能,和模态对话框的显示功能
心理学常用软件E-prime,在设计两位数加法运算中的简单举例。
js代码-位运算实现加减乘除
文章目录只用位运算不用算术运算实现整数的加减乘除运算位运算实现整型算术运算加法相应代码减法相应代码乘法相应代码除法相应代码 只用位运算不用算术运算实现整数的加减乘除运算 位运算实现整型算术运算 【题目】 ...
(1)按照实验要求设计简单ALU,能执行8种操作,分别为: 1)加、减、增1、减1等4种8位...也可以先构造4位加法器,再进一步实现8位加减运算。 注意:算术运算的两个操作数要求都是带符号数,即1位符号位和7位数据位。
基于pytorch的实现的LSTM,有完整的定义和使用,数据集和验证集自动生成,训练500次后随机生成20组验证数据,正确率100%,代码加上注释共160行,是个简单实用的LTSM神经网络入门学习例子
设计任意两个复数实现4则运算(复数加法、减法、乘法、除法)的Web程序。要求采用如下的设计模式: (1)JavaBea+JSP (2)JavaBean+Servlet+JSP
用十字链表实现稀疏矩阵加法运算、稀疏矩阵减法运算、稀疏矩阵乘法运算
利用自己定义的大数类型,使用加法链和蒙哥马利算法的混合算法极大的提高了幂运算和幂模运算的速度。
使用FPGA内部硬件资源实现浮点数加法运算,占用资源少,运算速度快
采用十字链表表示稀疏矩阵,并实现矩阵的加法运算