精华内容
下载资源
问答
  • Python操作------两个二进制数相加
    2020-03-30 23:29:26

    Python操作------两个二进制数相加

    方法一:转换成十进制再相加

    def addBinary(self, a, b):
            """
            :type a: str
            :type b: str
            :rtype: str
            """
            a = int(a,2)
            b = int(b,2)
            return bin(a+b)[2:]
    
    更多相关内容
  • python 二进制数相加

    2018-11-15 10:06:00
    def add_binary_nums(x,y): max_len = max(len(x), len(y)) x = x.zfill(max_len) y = y.zfill(max_len) result = '' carry = 0 ...

     

    def add_binary_nums(x,y):  
            max_len = max(len(x), len(y))  
      
            x = x.zfill(max_len)  
            y = y.zfill(max_len)  
      
            result = ''  
            carry = 0  
      
            for i in range(max_len-1, -1, -1):  
                r = carry  
                r += 1 if x[i] == '1' else 0  
                r += 1 if y[i] == '1' else 0  
                result = ('1' if r % 2 == 1 else '0') + result  
                carry = 0 if r < 2 else 1         
      
            if carry !=0 : result = '1' + result  
      
            return result.zfill(max_len)  
          
    print(add_binary_nums('11', '1'))  
    print(add_binary_nums('10', '10'))  
    print(add_binary_nums('111', '111'))  
    print(add_binary_nums('1111111', '1'))

     

    转载于:https://www.cnblogs.com/sea-stream/p/9961890.html

    展开全文
  • 实验要求: 编程计算X+Y+Z=?...第二种方案,先将X、Y、Z的低十六位二进制数相加,再考虑X、Y、Z的高十六位二进制数相加。 实验仪器设备: 微机原理实验箱、安装了TPC_386EX软件的计算机、串口通信线、


    实验要求:

    编程计算X+Y+Z=?(X、Y、Z为32位二制数)。



    实验思考与原理:

    本实验是三个32位二制数相加运算,而8086指令系统中只有16位二进制数加法指令,因此,不能直接用加法指令ADD将两个数相加。假设三个32位数分别为X、Y、Z,从原理上来说,相加的方案有两种。第一种方案,将X与Y相加完后,再将它们的和与Z相加。第二种方案,先将X、Y、Z的低十六位二进制数相加,再考虑X、Y、Z的高十六位二进制数相加。

    实验仪器设备:

    微机原理实验箱、安装了TPC_386EX软件的计算机、串口通信线、键盘



    实验步骤:(采用方案二)

    1. 先将X与Y的低十六位二进制数相加,保存进位到某个单元或某个寄存器(假设为BX,用于存放低十六位二进制数相加的进位)。
    2. 再将X与Y的低十六位二进制数相加的结果与Z的低十六位二进制数相加,相加完后的进位还要加到BX中。
    3. 同样将X与Y的高十六位二进制数相加,保存进位到某个单元或某个寄存器(假设为DX,用于存放高十六位二进制数相加的进位)。
    4. 然后将X与Y的高十六位二进制数相加的结果与Z的高十六位二进制数相加,相加完后的进位还要加到DX中。
    5. 最后将X、Y与Z的高十六位二进制数相加的结果与BX相加,相加的进位还要加到DX中。


    实验程序:

    .MODEL SMALL
    .386
    DATA SEGMENT  ;定义一个数据段
          X  DD 90009000H
          Y  DD 70006000H
          Z  DD 60006000H
    DATA ENDS
    CODE 		SEGMENT   ;定义一个代码段     
    ASSUME 	CS:CODE, DS:DATA
    START: 	MOV AX, DATA
            MOV DS, AX
            XOR BX,BX; 存放进位的寄存器BX清0
            XOR DX,DX; 存放进位的寄存器DX清0
            LEA SI,X
            MOV AX,[SI]
    	    ADD AX,[SI+4]
                ADC BX,0;保存低十六位X+Y产生的进位
                ADD AX,[SI+8]
                MOV DI,AX;将高十六位数送入SI寄存器中,以免在子程序中影响CX的值(或者不用MOV指令,在子程序中对CX进行现场保护)
                ADC BX,0;保存低十六位X+Y+Z产生的进位
            MOV AX,[SI+2]
                ADD CX,[SI+6]
                ADC DX,0;保存高十六位X+Y产生的进位
    	    ADD CX,[SI+10]
                ADC DX,0;保存高十六位X+Y+Z产生的进位 
                ADD CX,BX;
                ADC DX,0;保存CX+BX产生的进位
            MOV SI,CX;将高十六位数送入SI寄存器中,以免在子程序中影响CX的值(或者不用MOV指令,在子程序中对CX进行现场保护)
            XCHG DX,AX
            CALL DISPAX;显示进位DX的内容
            XCHG SI,AX;
            CALL DISPAX;显示高十六位的内容
            XCHG DI,AX
            CALL DISPAX;显示低十六位的内容
            MOV AH,02
            MOV DL,48H;显示字母H
            INT 21H
            JMP $
           
    ;子程序DISPAX显示AX的内容
    DISPAX: XCHG AL,AH
    	    CALL DISPAL
    	    XCHG AH,AL
    	    CALL DISPAL
            RET
    DISPAL: PUSH AX
            PUSH AX
            MOV CL,4		;处理高位十六进制数
            SHR AL,CL
            CALL CHANG	;十六进制数变换成ASCII码
            MOV AH,02
            MOV DL,AL
            INT 21H			;显示一位字符
            POP AX
            AND AL,0FH		;处理低位十六进制数
            CALL CHANG	;十六进制数变换成ASCII码
            MOV AH,02
            MOV DL,AL
            INT 21H		;显示一位字符
            POP AX
            RET
    ; 十六进制数变换成ASCII码
    CHANG:  CMP AL,10
            JNGE CHANG1
            ADD AL,7
    CHANG1: ADD AL,30H
            RET
    
    CODE     ENDS
    END  START

    实验结果记录:

    实验总结及补充:

    该实验的关键是32位二进制数的相加方法以及32位结果数的显示。该程序调用了多个子程序,比较复杂,需要我们逐步分析一个个模块。初学微机不久,对汇编程序尚不熟练,以下是对类似程序16位二进制数相加程序一些重要指令的标注。

      

    展开全文
  • 悬赏问题都来回答!!!Java语言实现两个二进制数相加,不需要把结果转换为十进制二进制数最大100位 完整的代码写给我看!
  • 两个二进制相加

    2022-03-23 09:27:04
    两个二进制相加可以用位运算,当一个为一 一个为零时 两位相加就为一 两位都是一的话 就往前进一 都为零的话 结果为零 先将 两个二进制长度相同 短的话在前面补零 然后把两个字符串改为数组 当两个都为一的话 ...

    两个二进制的相加可以用位运算,当一个为一 一个为零时 两位相加就为一  两位都是一的话 就往前进一  都为零的话  结果为零

    先将 两个二进制长度相同 短的话在前面补零 

    然后把两个字符串改为数组

     当两个都为一的话 需要往前一位进一  当前一位也为一的话还需要往前进一

    创建一个  函数 当两位都是一的话  进入函数判断下一个是1还是0 如果是1, 将1改为零直到遇见0,把0改为1.当函数是0时将0改为一

    最后再将数组改为字符串

    代码:

    var addBinary = function(a, b) {
       // 补零区域
        if(a.length>b.length){
            var num = a.length-b.length
            for(var i = 0 ;i<num;i++){
                b="0"+b
            }
        }else{
            var num = b.length-a.length
            for(var i = 0 ;i<num;i++){
                a="0"+a
            }
        }
    // 当两位都是一的话进入的函数
        function fn(str,ind){
               for(var i =ind;i>=0;i--){
                   if(str[i-1]==1){
                       str[i-1]=0
                   }else{ 
                       if(i-1<0){
                           str.unshift(1)
                       }else{
                           str[i-1]=1
                       }
                       
                      
                       break
                   }
               }
           
               return str
        }
        // return  b
    //进行位运算
        var str = []
        for(var j=0;j<a.length;j++){
            str.push(a[j])
        }
        var num1 = b.length-1
        var num3 = str.length-1
        for(var i=num3 ;i>=0;i--){
    
            if(str[i]*1+b[num1]*1>1){
                str[i]=0
                if (str[i-1]==0) {
                    str[i-1]=1
                }else{
                    str=  fn(str,i)//调用函数
                    if(num3<str.length-1){
                        i++
                    }
                }
            }else if(str[i]==1||b[num1]==1){
                str[i]=1
                
            }else{
                str[i]=0
    
            }
            num1--
        }return str.toString().replace(/,/g,"")//将数组转为字符串
    };

     

    展开全文
  • 该程序使用vivado与FPGA板可实现四位二进制数可控加法的功能,用数码管显示,动态输入动态显示,并添加按键防抖功能。
  • 流水灯显示八位二进制相加,二进制相加的过程
  • public static void main(String[] args) { String str1 = "1010"; String str2 = "1011"; System.out.println(addBinary(str1,str2)); } public static String addBinary(String a, String b) { ...
  • 1073. 负二进制数相加

    千次阅读 2019-07-13 01:49:06
    给出基数为 -2 的两个 arr1 和 arr2,返回两数相加的结果。 数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr = [1,1,0,1] 表示数字 (-2)^3 + (-2)^2 + (-2)^0 = -...
  • 将一个数字字符串变为八位二进制数然后相加,最后结果为一个二进制数相加结果 //测试字符串 String xxx = "1234"; //将字符串转换为字符数组 char[] arr = xxx.toCharArray(); //得到数组长度,避免多次调用 ...
  • 二进制怎么相加

    万次阅读 2018-09-28 15:02:59
    0+0=0,0+1=1,1+0=1,1+1=10 ,也就是当两个相加二进制位仅一位为1时,相加的结果为1;如果两个二进制位全是0,相加的结果仍为0;而如果两个相加二进制位均为1,则结果为10(相当于十进制中的2),也就是“逢2...
  • 将两个多位十进制数相加,要求加和被加均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处
  • 给定两个二进制字符串,返回他们的和(也是一个二进制字符串)。 输入的字符串都是非空的,并且只包含1或0。 示例: Example 1: Input: a = "11", b = "1" Output: "100" Example 2:...
  • Java两个二进制数求和

    千次阅读 2021-02-09 15:47:28
    在本教程中,您将学习一个Java程序,了解如何对两个二进制数求和。二进制数仅以“ 0”和“ 1”表示。没有其他数字。如果一个数字的数字不为0和1,则它不是二进制数字。我在互联网上看到很多例子,它们都只显示程序,...
  • 二进制数相加或两个数相加(C++)

    千次阅读 2016-06-17 15:41:11
    1、二进制数相加问题 2、两个链表的数相加(leetcode第2题)
  • 两个n位二进制数分别存储在两个n元数组A和B中,这两个整数的和存在一个n+1元的数组C中 答: 此问题主要是考察相加进位的问题,元素1+1 =0 并且往前进一位 ADD-BINARY(A,B)  C=new integer[A.length+1]  carry=0 ...
  • 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例1: 输入:11 输入:1 输出:100 示例2: 输入:1010 输入:1011 输出:10101 代码实现: #include <bits/...
  • 代码中是设x=1234;Y=5678.最终将两BCD码X+Y的和保存在SUM变量之中(结果在附加段,请自行用debug查看)
  • 二进制相加进位

    千次阅读 2018-04-06 12:13:37
    题目: 有两个字符串里面仅包含二进制,然后让两个字符串内的二进制数字从右往左相加进位得到结果.例如:a=”11”,b=”1” 结果是c=”100”,a中最右侧的1与b中的1相加得2,2的二进制是10,在此位保留一个0,1作为进位, 在...
  • 两个n位二进制整数相加

    千次阅读 2018-06-30 13:47:36
    《算法导论》第3版习题2.1-4中提到把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组A和B中,这两个整数的和应按二进制形式存储在一个(n+1)元数组C中。 可先将A、B数组反转,按位相加,定义进位...
  • 二进制数的加法步骤解析

    千次阅读 2020-11-18 17:43:00
    文章目录位运算二进制数加法步骤例子代码演示 二进制的加法需要用到位运算,所以先来复习下位运算。 位运算 运算 符号(java) 描述 位与 & 都为1,结果为1,否则为0。 位或 | 有一个为1或两个位都为1,...
  • 设计带符号位的 8 位加法器电路,每个加的最高位为符号位,符号位‘1’ 表示-,符号位‘0’表示+
  • C语言计算二进制数加法

    千次阅读 多人点赞 2020-09-07 21:18:12
    文章目录前言一、C语言中二进制数加法计算测试结果 前言 在C语言中计算二进制数的加法 一、C语言中二进制数加法计算 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <...
  • 两个n位二进制整数相加问题

    千次阅读 2017-07-17 21:32:41
    (原问题见算法导论第三版2.1-4) 问题:考虑把两个n位二进制数加起来的问题。这两个整数分别存储在两个n元数组A和B中。这两个整数的和应按二进制形式存储在一个(n + 1)元数组C中。
  • 题目要求求两个二进制数的加法算法思路:1、要定义几个参数,carry代表进位,opa代表数组a的元素转换成数字,opb代表数组b的元素转换成数字。sum代表数组的和2、判断两个字符串是否长度相同,如果不同的要从左补齐...
  • 题目给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题方案:1.使用JAVA...
  • 如我们平时所见,要将两个二进制数相加,很简单,但是如果让你来设计程序来实现计算机的运算,倒是有一番难度。 接下来我们将使用位运算式子,来方便我们编写计算二进制数的程序,毕竟只要使用公式实现了加法的运算...
  • 微机原理实验报告-两个多位十进制数相加...、实验内容将两个多位十进制数相加,要求被加和加均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。三、程序流程图...
  • 二进制字符串计算器 两个二进制字符串相加的算法。 示例:“01”+“1011”=“1100”

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,222
精华内容 36,088
关键字:

二进制数如何相加