计算机里加法的实现

    static void Main(string[] args)
        {
            //目标:用位运算实现4+5的加法
            //4 + 5 = 9
            //4的二进制0000 0100
            //5的二进制0000 0101

            //1.先异或                  2.与操作(判断是否进位)
            //0000 0100                 0000 0100
            //0000 0101                 0000 0101
            //---------                 ---------
            //0000 0001                 0000 0100  (如果值不等于0表示有进位)
            //                          ---------
            //                          0000 1000   (有进位就左移)

            //3.拿①和②的结果再异或    4.拿①和②的结果与操作(判断是否进位)
            //0000 0001                 0000 0001
            //0000 1000                 0000 1000
            //---------                 ---------
            //0000 1001                 0000 0000  (如果值等于0表示没有进位)

            //最后的结果就是③的结果0000 1001,十进制就是9

            //代码实现
            int sum = add(4, 5);
            Console.WriteLine("sum = {0}",sum);

        }
        //用位运算实现加法
        static int add(int a, int b)
        {
            int tmp = a ^ b;
            int iAnd = a & b;
            bool isCarry = iAnd == 0;
            if (!isCarry)
            {
                //如果进位就左移
                iAnd = iAnd << 1;
                return add(iAnd, tmp); //这里递归调用一下
            }
            else
            {
                return tmp;
            }
        }
时间: 2024-08-11 01:35:58

计算机里加法的实现的相关文章

搜索引擎--范例:中英文混杂分词算法的实现--正向最大匹配算法的原理和实现

纯中文和中英文混杂的唯一区别是,分词的时候你如何辨别一个字符是英文字符还是孩子字符, 人眼很容易区分,但是对于计算机来说就没那么容易了,只要能辨别出中文字符和英文的字符,分词本身就不是一个难题 1:文本的编码问题: utf8:windows下,以utf8格式保存的文本是一个3个字节(以16进制)的BOM的,并且你不知道一个汉字是否是用3位表示,但是英文适合ascii编码一样的 ascii:英文一位,中文两位,并且中文的第一个字节的值是大于128和,不会和英文混淆,推荐 unicode:中文基本是

Google的量子计算之梦:比传统计算机快上1亿倍?

Google的量子计算之梦:比传统计算机快上1亿倍? 本文来自technologyreview,作者 Tom Simonite ,机器之心编译出品,参与:salmoner,薛矽,汪汪,微胖. 近日,谷歌宣布他们的量子计算机比传统计算机快上1亿倍,有人欢呼雀跃,有人提出质疑.让我们来看看背后的故事吧,看看物理学家John Martinis 如何帮谷歌实现炙手可热的量子计算之梦.他或许正手握着量子计算的圣杯,本文选自麻省理工科技评论. Martini团队追寻的神奇计算机 John Martinis用

软考笔记第六天之各排序算法的实现

对于前面的排序算法,用c#来实现 直接插入排序: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序.第一趟比较前两个数,然后把第二个数按大小插入到有序表中: 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中:依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程.直接插入排序属于稳定的排序,最坏时间复杂性为O(n^2),空间复杂度为O(1).直接插入排序是由两层嵌套循环组成的.外层循环标识并决定待比较的数值.内层循环为待比较数值确定其最终位

通用固定长度编码格式的字符串查找算法的实现

通用固定长度编码格式的字符串查找算法的实现 字符串的查找是数据库应用中必不可少的操作,而且每种数据库产品(ORACLE.DB2.SYBASE.MS SQL SERVER.MYSQL等等)也都提供了对应的字符串处理函数,比如DB2的LOCATE函数. 但在实际的工作中,还是会遇到一些特殊情况的处理,这使得直接使用字符串查找函数,得到的结果可能是错误的,比如本文中提到的固定长度编码格式的字符串的查找.值得注意的是,本文提出的算法可以稍加修改即移植到其它关系数据库系统或者前端开发工具中. 在实际数据库

计算机组成.计算机在计算啥.运算与ALU

突然发现在iPad的网页上也可以写博客哎,,这样就不用背着厚重的笔记本了 写了两句就发现,在输入状态下文本编辑窗口只能保持在最高,,,这样就被虚拟键盘挡住了,,,体验-1 再写两句发现又好了,,,体验+1 我所认为的计算机的运算,无非就是"算数",除了传统的加减乘除外,在二进制的表示下,还有逻辑运算与移位运算. 而计算机真正的魅力在于,可以算得很快,所以承受得住我们去对每一个运算所赋予的详细含义,在各种含义下的运算互相碰撞着,也就干成了各种各样的事情. 二进制的逻辑运算对应与数学上的二

计算机如何实现运算?

计算机是一个统称,实现计算的部件是CPU,在CPU内部有一个ALU 维基介绍 算术逻辑单元(英语:Arithmetic Logic Unit, ALU)是中央处理器的执行单元,是所有中央处理器的核心组成部分,由与门和或门构成的算数逻辑单元,主要功能是进行二进制的算术运算,如加减乘(不包括整数除法).基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示. 下面有几个题目: 1.不使用加减乘除实现加法运算 2.不使用加减乘除实现减法运算 3.不使用减乘除实现乘法运算 如果你知道答案,就没必

重学计算机组成原理(九)- 动态链接

把对应的不同文件内的代码段,合并到一起,成为最后的可执行文件 链接的方式,让我们在写代码的时候做到了"复用". 同样的功能代码只要写一次,然后提供给很多不同的程序进行链接就行了. "链接"其实有点儿像我们日常生活中的标准化.模块化生产. 有一个可以生产标准螺帽的生产线,就可生产很多不同的螺帽. 只要需要螺帽,都可以通过链接的方式,去复制一个出来,放到需要的地方 但是,如果我们有很多个程序都要通过装载器装载到内存里面,那里面链接好的同样的功能代码,也都需要再装载一遍,

python几种排序算法和二分查找方法的实现

一.算法概念 - 含义:算法就是对问题进行处理且求解的一种实现思路或者思想. 评判程序优劣的方法 - 消耗计算机资源和执行效率(无法直观) 计算算法执行的耗时(不推荐,因为会受机器和执行环境的影响) 时间复杂度(推荐) 时间复杂度 - 评判规则:量化算法执行的操作/执行步骤的数量, - 如下列 def sumOfN(n): # 执行一步: theSum = 0 for i in range(1,n+1): # 下式一共执行n步,for循环不算一步,因为它是控制循环次数的 theSum = the

Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机

如题 Windows8.1-KB2999226-x64.msu  双击安装 安装提示 此更新不适用你的计算机 . 解决方案: 放在D:\update\目录下 windows键+X  选择  命令提示符(管理员)  一定要是管理员 打开cmd 分别执行下面两句.红色部分就是自己的更新程序了.其他安装同理 例如Windows8.1-KB2919442-x64.msu 等 1    expand –F:* D:\update\Windows8.1-KB2999226-x64.msu D:\update