精华内容
下载资源
问答
  • 二进制加法运算

    千次阅读 2019-06-20 21:54:54
    两个二进制整数相加时,是位对位处理的,从最低的一对位(右边)开始,依序将每一对位进行加法运算。两个二进制数字相加,有四种结果,如下所示: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 1 与 1 ...

    两个二进制整数相加时,是位对位处理的,从最低的一对位(右边)开始,依序将每一对位进行加法运算。两个二进制数字相加,有四种结果,如下所示:

     

    0 + 0 = 00 + 1 = 1
    1 + 0 = 1 1 + 1 = 10

    1 与 1 相加的结果是二进制的 10(等于十进制的 2)。多出来的数字向更高位产生一个进位。如下图所示,两个二进制数 0000 0100 和 0000 0111 相加:

    二进制加法运算

    从两个数的最低位(位 0)开始,计算 0+1,得到底行对应位上的 1。然后计算次低位(位 1)。在位 2 上,计算 1+1,结果是 0,并产生一个进位 1。然后计算位 3,0+0,还要加上位 2 的进位,结果是 1。

    其余的位都是 0。上图右边是等价的十进制数值加法(4 + 7 = 11),可以用于验证左边的二进制加法。

    有些情况下,最高有效位会产生进位。这时,预留存储区的大小就显得很重要。比如,如果计算 1111 1111 加 0000 0001,就会在最高有效位之外产生一个 1,而和数的低 8 位则为全 0。

    如果和数的存储大小最少有 9 位,那么就可以将和数表示为 1 0000 0000。但是,如果和数只能保存 8 位,那么它就等于 0000 0000,也就是计算结果的低 8 位。

    汇编语言基本概念简介
    1.1 汇编语言是什么
    1.2 汇编语言的应用
    1.3 虚拟机是什么
    1.4 汇编语言的数据表示
    1.5 二进制整数
    1.6 二进制加法运算
    1.7 字节(byte)
    1.8 十六进制整数
    1.9 补码及进制转换
    1.10 二进制减法运算

    展开全文
  • Description 完成两个8位二进制数累加运算。如果最高位有进位,则加入最后一位。 Input 输入两个8位二进制数 Output 输出二进制数累加和。 Sample Input 10001011 01111100 Sample Output 00001000
  • java二进制运算器(加、见、乘、除)**********
  • java实现二进制加法

    千次阅读 2018-07-12 17:11:00
    总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数相加的结果。二进制应该还有其他算法,由于知识浅薄就不知道了。 代码: public static void main(String[] args){ int a...

    先看打印结果在看代码比较好理解。结果在最下面的位置。

    总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数相加的结果。二进制应该还有其他算法,由于知识浅薄就不知道了。

     

    代码:

     public static void main(String[] args){
            int a=11,b=9;//初始化要执行加法的值
            System.out.println("===开始二进制运算===");
           add(a,b);
            System.out.println("===二进制运算结束===");
    
        }
    
    
        /**
         * 将二进制的数据打印出来
         * @param binars 需要打印的二进制值
         * @param paramName 需要打印的参数名称
         * @return 返回打印的字符串
         */
        public  static String printBnary(StringBuilder binars,int param){
            StringBuilder binarsRe=new StringBuilder();
            String[] strs=binars.toString().split(",");
            int strLength=strs.length;
            while (strLength>=1){
    
                binarsRe.append(strs[strLength-1]+" ");
                strLength--;
            }
            return binarsRe.toString();
        }
    
        /**
         * 十进制转换为二进制输出
         * @param a 要转换的十进制数
         * @param binars 接收转换后的二进制数据
         * @param paramName 需要打印的参数名称
         * @return
         */
        public static  String DecimalTransBinary(int a,StringBuilder binars,int param){
            int rem=a%2;//取余数
            int base=a/2;//取基数
            /**
             * 物流是余数和基数都必须除尽为0
             */
            if(base>0 || rem>0){
                //将所有的余数都添加到字符串中使用,隔开在打印是使用
               binars.append(rem+",");
                DecimalTransBinary(base,binars,param);
             }
                //十进制转换二进制成功后,将二进制数据打印出来
                return printBnary(binars,param);
    
    
        }
    
        /**
         * 十进制加法,解释如何使用二进制实现的
         * @param a 执行加法的参数
         * @param b 执行加法的参数
         * @return 返回加法成功后的整数
         */
        public static  int add(int a,int b){
    
            //对需要相加的数据输出为二进制
            StringBuilder binars=new StringBuilder();
            String aStr=DecimalTransBinary(a,binars,a);
    
            //将stringBuilder数据输出到控制台
            binars.setLength(0);
            String bStr=DecimalTransBinary(b,binars,b);
    
            int res=a;
            //按为异域的二进制运算
            int xor=a^b;
            System.out.println("");
            System.out.println("按位异域(^):二进制数据的相同位不同则为1,相同则为0。");
            System.out.println(a+"的二进制值:"+aStr);
            System.out.println(b+"的二进制值:"+bStr);
            System.out.println("参数:"+a+" 参数:"+b+"  进行"+a+"^"+b+":");
            binars.setLength(0);
            String xorStr=DecimalTransBinary(xor,binars,xor);
            System.out.println(aStr+"^"+bStr+"="+xorStr);
            System.out.println("按位异域后得到的二进制值:"+xorStr);
            System.out.println("按位异域后得到的十进制值:"+xor);
            //按位与的二进制运算和左移一位的值
            int forward=(a&b)<<1;
            System.out.println();
            System.out.println("按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0。");
            System.out.println("左移(<<):二进制数据左移b为(在后面添加b个0)。例如:11<<1。11的二进制为1011,左移1为就是10110;");
            System.out.println("10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。11<<2就是11乘以2的次方的结果。");
            System.out.println("参数:"+a+" 参数:"+b+"  进行("+a+"&"+b+")<<1:");
            binars.setLength(0);
            String forwardStr=DecimalTransBinary(forward,binars,forward);
            System.out.println("("+aStr+"&"+bStr+")<<1="+forwardStr);
            System.out.println("按位与后得到的二进制值:"+forwardStr);
            System.out.println("按位与后得到的十进制值:"+forward);
            System.out.println();
            if(forward!=0){
                System.out.print("("+a+"&"+b+")<<1="+forward+"运算结果不为0,");
                System.out.println("将"+a+"^"+b+"运算的结果值:"+xor+";("+a+"&"+b+")<<1运算的结果值:"+forward+"。继续重复以上运算。");
                 res=add(xor,forward);
            }else{
                System.out.println("("+a+"&"+b+")<<1="+forward+"运算结果为0;"+a+"^"+b+"按位异域的运算结果就是最终的和:"+xor);
                res=xor;
            }
    
            return  res;
        }
    

      

    结果:

    ===开始二进制运算===

     

    按位异域(^):二进制数据的相同位不同则为1,相同则为0

    11的二进制值:1 0 1 1

    9的二进制值:1 0 0 1

    参数:11 参数:9  进行11^9:

    1 0 1 1 ^1 0 0 1 =1 0

    按位异域后得到的二进制值:1 0

    按位异域后得到的十进制值:2

     

    按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0

    左移(<<):二进制数据左移b为(在后面添加b0)。例如:11<<111的二进制为1011,左移1为就是10110

    10110转换为十进制就是:22。左移用十进制解释就是,11乘以21次方的结果。11<<2就是11乘以2的次方的结果。

    参数:11 参数:9  进行(11&9<<1:

    (1 0 1 1 &1 0 0 1 )<<1=1 0 0 1 0

    按位与后得到的二进制值:1 0 0 1 0

    按位与后得到的十进制值:18

     

    11&9<<1=18运算结果不为0,将11^9运算的结果值:2;11&9<<1运算的结果值:18。继续重复以上运算。

     

    按位异域(^):二进制数据的相同位不同则为1,相同则为0

    2的二进制值:1 0

    18的二进制值:1 0 0 1 0

    参数:2 参数:18  进行2^18:

    1 0 ^1 0 0 1 0 =1 0 0 0 0

    按位异域后得到的二进制值:1 0 0 0 0

    按位异域后得到的十进制值:16

     

    按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0

    左移(<<):二进制数据左移b为(在后面添加b0)。例如:11<<111的二进制为1011,左移1为就是10110

    10110转换为十进制就是:22。左移用十进制解释就是,11乘以21次方的结果。11<<2就是11乘以2的次方的结果。

    参数:2 参数:18  进行(2&18<<1:

    (1 0 &1 0 0 1 0 )<<1=1 0 0

    按位与后得到的二进制值:1 0 0

    按位与后得到的十进制值:4

     

    2&18<<1=4运算结果不为0,将2^18运算的结果值:16;2&18<<1运算的结果值:4。继续重复以上运算。

     

    按位异域(^):二进制数据的相同位不同则为1,相同则为0

    16的二进制值:1 0 0 0 0

    4的二进制值:1 0 0

    参数:16 参数:4  进行16^4:

    1 0 0 0 0 ^1 0 0 =1 0 1 0 0

    按位异域后得到的二进制值:1 0 1 0 0

    按位异域后得到的十进制值:20

     

    按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0

    左移(<<):二进制数据左移b为(在后面添加b0)。例如:11<<111的二进制为1011,左移1为就是10110

    10110转换为十进制就是:22。左移用十进制解释就是,11乘以21次方的结果。11<<2就是11乘以2的次方的结果。

    参数:16 参数:4  进行(16&4<<1:

    (1 0 0 0 0 &1 0 0 )<<1=

    按位与后得到的二进制值:

    按位与后得到的十进制值:0

     

    16&4<<1=0运算结果为016^4按位异域的运算结果就是最终的和:20

    ===二进制运算结束===

    转载于:https://www.cnblogs.com/gynbk/p/9300513.html

    展开全文
  • 二进制数的加法步骤解析

    千次阅读 2020-11-18 17:43:00
    文章目录位运算二进制加法步骤例子代码演示 二进制加法需要用到位运算,所以先来复习下位运算。 位运算 运算 符号(java) 描述 位与 & 都为1,结果为1,否则为0。 位或 | 有一个为1或两个位都为1,...


    二进制的加法需要用到位运算,所以先来复习下位运算。

    位运算

    运算符号(java)描述
    位与&都为1,结果为1,否则为0。
    位或|有一个为1或两个位都为1,则结果为1,否则为0。换句话说,只有两个都为0,则结果为0 ,其它为1。
    异或^两个位相同,其为0。两个位不同,其为1。
    取反~0变为1,1变为0。
    左移<<将二进制左移指定位数,右侧补0
    右移>>将二进制由移指定位数,右侧超出部分截取丢弃。如a>>b相当于a/2^b。

    二进制数加法步骤

    1. 将两二进制数异或,获取无需进位的二进制数
    2. 将两二进制数位与,获取需进位的二进制数
    3. 将2步骤的进位二进制数左移1位,得到进位之后的二进制数
    4. 将3步骤的已进位的二进制数与1步骤的不需进位的二进制数位与,如果位与的结果等于0,即表示无进位需处理了,进入步骤4。如果结果不为0,则表明还有进位需要处理,则继续重复1、2、3、4步骤。
    5. 将1、2步骤的结果进行位或,其所得结果即为加法之后的二进制数。

    例子

    如,二进制数0100(4)与1110(14)相加得二进制结果10010(18),其步骤如下:
    在这里插入图片描述

    代码演示

    python.

    def add(a, b):
        ncb = a ^ b  # 不需要进位的二进制数部分
        cb = (a & b) << 1  # 进位的二进制数部分
        if ncb & cb != 0:  # 如果位与之后的结果还有1,则表示还有需要进位的
            return add(ncb, cb)  # 递归
        return ncb | cb  # 进位与不进位的二进制取位或得到结果
    
    
    if __name__ == '__main__':
        print(add(0, 3))
    
    
    展开全文
  • 二进制减法运算

    千次阅读 2019-06-20 21:55:02
    如果采用与十进制减法相同的方法,那么从一个较大的二进制数中减去一个较小的无符号二进制数就很容易了。示例如下: 01101 (十进制数 13) – 00111 (十进制数 7) ———- 位 0 上的减法非常简单: 01101 ...

    如果采用与十进制减法相同的方法,那么从一个较大的二进制数中减去一个较小的无符号二进制数就很容易了。示例如下:

     

        01101    (十进制数 13)
    –   00111    (十进制数 7)
    ———-

    位 0 上的减法非常简单:

         01101
    –    00111
    ———-
                0

    下一个位置上执行(0-1),要向左边的相邻位借1,其结果是从 2 中减去 1:

         01001
    –    00111
    ———-
              10

    再下一位上,又要向左边的相邻位借一位,并从 2 中减去 1:

         00011
    –    00111
    ———-
            110

    最后,最高两位都执行的是零减去零:

         00011
    –    00111
    ———-
         00110            (十进制数 6)

    执行二进制减法还有更简单的方法,即将被减去数的符号位取反,然后将两数相加。这个方法要求用一个额外的位来保存数的符号。

    现在以刚才计算的(01101-00111)为例来试一下这个方法。首先,将 00111 按位取反 11000 加 1,得到 11001。然后,把两个二进制数值相加,并忽略最高位的进位:

    01101    (+13)
    11001    (-7)
    ——-
    00110    (+6)

    结果正是我们预期的 +6。

    汇编语言基本概念简介
    1.1 汇编语言是什么
    1.2 汇编语言的应用
    1.3 虚拟机是什么
    1.4 汇编语言的数据表示
    1.5 二进制整数
    1.6 二进制加法运算
    1.7 字节(byte)
    1.8 十六进制整数
    1.9 补码及进制转换
    1.10 二进制减法运算

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201712/07/1512660859_843361.png) 参数是个二进制数组 ,如图所示,图片是N个二进制字符串,求N个二进制字符串之和。
  • 最近对电脑中,数据的运算过程感兴趣了,前面写了两篇相关的博文,一篇是整数的存储原理https://editor.csdn.net/md/?articleId=103569332 一篇是负数的位移运算https://editor.csdn.net/md/?articleId=103638244 有...
  • 任意位数的两个16进制加法运算

    千次阅读 2018-11-22 14:21:50
    前段时间因为项目需要,要求需要用到两个30位的16进制数运算相加,普通的类型装换会溢出,无法得出真正的结果,用ASP脚本写了算法,下班没事用Java写了这个可以进行任意位数的16进制加法运算,希望得到指正修改,...
  • Java二进制的加减乘除

    千次阅读 2018-02-23 13:00:39
    引子 某天研究 fail-fast机制的时候,去看了看hashCode的实现... + s[n-1]于是很不解,这个公式很明显会溢出(超过2^32),尝试了几次发现系统会输出hashCode为负数的值,就默默地去回顾一下二进制的加减乘除准备工...
  • 各位值相加,不算进位值,二进制亦或运算 计算进位值,二进制运算,然后左移一位; 对1,2步的结果,重复以上两步骤 两数之和就是不计算进位值加上进位值,直到没有进位 第二部为什么要左移? 当你在十进制下...
  • java初学者--实现二进制加法

    千次阅读 2017-03-02 02:53:19
    我是用StringBuilder做的,网上还有更简单的方法(用... * 二进制加法,输入和输出都是字符串类型 * @param bin1 * @param bin2 * @return */ public static String sum(String bin1,String bin2){ StringB
  • 整数部分,把十进制转成二进制一直分解至商数为0。读余数从下读到上,即是二进制的整数部分数字。 小数部分,则用其乘2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为0为止,之后读所有...
  • 二进制的加减法_二进制加减法

    万次阅读 2020-07-25 16:25:50
    二进制的加减法 1)二进制加法 (1) Binary Addition) Since binary numbers consist of only two digits 0 and 1, so their addition is different from decimal addition. Addition of binary numbers can be done ...
  • 学习背景:最近在看很多JAVA类的源码,遇到了很多的位运算,所以系统的学习了下有关二进制的知识。 首先,看一下JAVA中的基本数据的字节(Byte)长度和bit长度: 基本数据类型 字节Byte bit byte 1字节 8位 ...
  • 36进制的简单实现,也可以扩展成36以下进制。也可以利用java自带API精简代码 public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String num_a = &amp;amp;amp;quot;zz&...
  • ####实现二进制补码的加法 (全加法实现) 首先声明两个int类型的变量 CF 和OF,用来模拟加法过程中的进位和溢出 对于加法结果的每一位,都是由CF、oprend1、oprend2三位异或产生的结果(这三个数里面有奇数个1,...
  • 人们最熟悉的是十进制数,但是在计算机内部采用的是二进制数,所有的外界信息在被转化为不同的二进制数后,计算机才能对其进行传送,储存和加工处理。 二进制数的编码表示 一个数在机内的表达形式称为“机器数”...
  • Java二进制、八进制、十进制、十六进制及其相互转换 进制的基本介绍 所有数字在计算机底层都以二进制形式存在。 对于整数,有四种表示方式: 二进制(binary): 0,1 ,满2进1.以0b或0B开头。 十进制(decimal): 0-9 ...
  • java_位运算加法_8位二进制

    千次阅读 2017-06-25 23:06:03
    package algorithm; import java.util.Scanner;... * @description: 八位二进制加法——题目来自技术问答我回答了他的问题觉得有必要,于是保存下来,本想放在code里但是觉得在里面看代码不是很方便  
  • 1、将String类型的二进制数据转换成原码存放到数组中 public class Test { public static void main(String[] args) { String strByte = "10101000"; //168 将上面数据看成原码,得到的数据(纯粹只是一个转换...
  • 二进制基础运算整理

    2020-11-27 19:34:05
    这时的二进制就是原码表示,在计算机中,为了简化运算单元的逻辑处理、降低硬件电路复杂度和成本,只有加法器的硬件电路,计算机的减法是通过数学变换把其转化成加法运算,比如5-2,也就是5+(-2),但是如果用原码...
  • 思路:不用四则运算的话 就想到了用二进制。自己试着实现的时候,断档了。现在来看看学习到的思路:在我们列式计算的时候,各位依次相加,有进位的就进位,其实他是可以分开的,即a+b=(a和b各位相加的值)+(a和b...
  • 十进制数转换为二进制数、八进制数、十六进制数的方法: 二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和 与十进制 (1)二进制转十进制 方法:“按权展开求和” 【例】: 规律:...
  • java二进制操作计算的总结

    千次阅读 2019-03-17 07:52:26
    一直以来对二进制的操作计算不太清楚,这次找了一些资料完整地进行了一些总结。 一、进制类别和关系: 二进制,十进制,十六进制的区别和进制之间的相互转换方法(概念性的东西,可以百度)。 n位的二进制能够表示...
  • 二进制加,减法,23个位运算技巧

    千次阅读 2019-04-06 20:36:22
    二进制加,减法 二进制最高位为1时表示负数,为0时表示正数。 **原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。 举例说明:  int类型的 3 的...
  • 它由两个基本字符0,1组成,二进制代码运算规律是逢二进一。 十进制1, 二进制也是1; 十进制2(1+1), 二进制为10; 十进制3(1+1+1), 二进制为11; 十进制4, 二进制为100…… 也就 是说,用二进制做十进制的加法时...
  • 原理:k位k进制的数相加结果为0 ... //思路:开辟维数组空间, 输入数组 和 N 将数组中的数值依次转化成K进制数, 反向填入字符数组,求出其中第维度的长度 // 建立一个一维数组将 k进制的数加入
  • 1、原码、反码、补码,正数减法转补码加法 js 在进行二进制运算时,使用 32 位二进制整数,由于 js 的整数都是有符号数,最高位0表示正数,1表示负数,因此,js 二进制运算中使用的整数表达范围是 代码如下: -Math....
  • 用小写字母a-z代表0-25,进行两个数的加法运算 import java.util.ArrayList; import java.util.Scanner; public class Test { //全局变量进位 private static int jinWei = 0; public static void main...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,465
精华内容 7,386
关键字:

java二进制加法运算

java 订阅