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

    2017-08-26 19:39:44
    二进制的加法就是两个数的补码相加 7的 原码 0000 0111 反码 0000 0111 补码 0000 0111 -7的原码 1000 0111 反码 1111 1000 第一位1 是符号位表示为负 不变 其他位取反 补码 1111 1001 在反码基础上最后一...

    二进制的加法就是两个数的补码相加
    7的 原码 0000 0111
    反码 0000 0111
    补码 0000 0111
    -7的原码 1000 0111
    反码 1111 1000 第一位1 是符号位表示为负 不变 其他位取反
    补码 1111 1001 在反码基础上最后一位加一
    补码就是在内存中的存储形式
    这时 你把7和-7相加 在内存中哦
    0000 0111+ 1111 1001= 0000 0000 就是0

    展开全文
  • 总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数相加的结果。二进制应该还有其他算法,由于知识浅薄就不知道了。代码:public static void main(String[] args){int a=11,b=9;//...

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

    总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次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("左移(<

    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。

    左移(<

    10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。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。

    左移(<

    10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。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。

    左移(<

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

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

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

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

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

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

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

    展开全文
  • 本文是关于FPGA中二进制的加法的。
  • 计算机中二进制的加法

    万次阅读 2018-03-26 15:11:27
    :位逻辑与 将操作数转换成二进制数,然后将两个二进制操作数对象从低位到高位对齐,每位求与。若操作数对象同一位都为1,则结果对应位为1,若操作数对象同一位为0。 | :位逻辑或 将操作数转换成二进制数 ,然后...

    位运算符:

        &:位逻辑与    将操作数转换成二进制数,然后将两个二进制操作数对象从低位到高位对齐,每位求与。若操作数对象同一位都为1,则结果对应位为1,若操作数对象同一位为0。

         | :位逻辑或    将操作数转换成二进制数 ,然后将两个二进制操作数对象从低位到高位对齐,每位求或。若操作数对象同一位都为0,则结果对应为0,否则结果对应为1。

        ^ :位逻辑异或    将操作数转换成二进制数 ,然后将两个二进制操作数对象从低位到高位对齐,每位求异或。若操作数对象同一位不同为1,则结果对应位为1,否则结果结果中对应位为0。

        ~ :取反运算符    将操作数转换成二进制数 ,然后将各位二进制由0变成1,由1变成0。

    移位运算符:

        <<:左移    左移是将一个二进制操作数对象按指定的移动位数向左移,左边溢出的位数被丢弃,右边的空位用0补充。右移相当于乘以2的幂次。

                例如:

        >>:有符号右移    右移是将一个二进制操作数对象按指定的移动位数向右移,右边溢出的位数被丢弃,正数时左边的空位用0补充,负数时则左边的空位用1补充。右移相当于除以2的幂次。

            例如:


    计算机二进制加法运算:

        计算机计算二进制加法是分三部,第一步为将两个加数转换为二进制数,计算两个加数不需要进位的和(利用异或运算 ^ ),得出的结果。第二部将两个加数进行与运算(&)。第三部利用与运算得到结果进行左移运算(<<)(同时为计算两个加数需要进位的和),得出结果。将或异运算的结果和左移运算的结果作为两个新的加数,重复此操作。直到当与运算的结果为0,则异或运算的结果则为两个加数的和所对应的二进制数。

        例:



                                                                                                                                                                       2018.3.26

    展开全文
  • 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

    展开全文
  • 2.用"异或"来做不进制的加法 由XOR(异或,下文皆称为XOR)的运算性质,二者不同为1,二者相同时为0,除了1与1相加外,本身就相当与加法的法则,而这里的进位工作由AND替代了,所以1+1确实也是0,所以就可以用
  • // 然后相加之后,转回二进制的方法 第一种: 二进制加法 func binarySum(a,b string) string { index_a := len(a) - 1 index_b := len(b) - 1 jinwei := 0 result := "" for index_a >=0 &a
  • 由于是单链表,即只能通过一个方向进行遍历,但是为了模拟加法操作,即必须要在表尾进行加1操作并要准确考虑进位,所以我们利用链表逆置,即先逆置,再加1,再逆置,即可方便实现二进制加1
  • import java.util.*; public class erjinzhi { public static void main(String[] args) { Scanner reader=new Scanner(System.in); while(reader.hasNext()) { ...
  • 题意: 给两个数a b,问二进制情况下从a一直加1 直到b需要进多少位。...二进制只是由1和0组成,二进制各数都有规律可循。 9 8 7 6 5 4 3 2 10 0 0 0 0 0 0 0 0 (0)0 0 0 0 0 0 0 0 1 (1)0 0 0
  •  计算机计算二进制加法是分三部,第一步为将两个加数转换为二进制数,计算两个加数不需要进位和(利用异或运算 ^ ),得出结果。第二部将两个加数进行与运算(&)。第三部利用与运算得到结果进行左移运算()...
  • 汇编题目:计算32位二进制的加法

    千次阅读 2016-01-08 11:52:00
    编程计算数字加法运算:341ef000H+61201000H,进位不能丢弃 assume cs:codesg data segment db 16 dup(0) db 1eh,34h,0,0f0h ;数字:341ef000,你也可以使用立即数 db 20h,61h,0,10h ;数字:61201000,你也...
  • 12 . 二进制加法器 1) 如果想搭建一台计算机,那么首先就要造... 3)加法器中加法与进位是分开进行,两个二进制数相加结果是由异或门(异或门 XOR:1和0不同时出现才为1 ;否则为0)输出给出,而进位位是...
  • /*******************内容:四位二进制加法*****************************//*********方法:先当作十进制相加,然后把结果转化为二进制*************//***********************by:fohonet*************************...
  • 二进制实现加法

    2020-04-13 21:10:45
     看一下 3 + 4 的加法运算  3 的二进制表示: 011  4 的二进制表示: 100  3^4 (3按位异或4)的结果是: 111 => 7  上面的到的结果是就是 3 + 4 的实际结果  再看一个例子:  12 的二级制表示: 01100 ...
  • C语言计算二进制加法

    千次阅读 2020-09-07 21:18:12
    在C语言中计算二进制的加法 一、C语言中二进制数加法计算 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int k[100];//存放计算后的...
  • 二进制并行加法

    千次阅读 2012-12-06 04:36:47
    二进制并行加法器是一种能并行产生两个二进制数算术和逻辑部件,按其进位方式不同可分为串行进位和超前进位二进制并行加法器。 目前常用串行进位4位二进制并行加法器有T692,超前进位4位二进制
  • 二进制实现加法python

    千次阅读 2019-05-21 15:09:37
    二进制加法的原理 以5+2为例: 5 的二进制表示: 101 2 的二进制表示: 010 3^4(两个数字异或)结果是: 111 => 7 上面结果是就是 5 + 2 实际结果 以13+19为例 13 的二进制表示:01101 19 的二进制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,191
精华内容 1,676
关键字:

二进制的加法