精华内容
下载资源
问答
  • 由键盘输入两个二进制正整数(均不超过2的31次方),计算输出它们的和(结果同样以二进制表示)。注:本题以字符串方式读取数据时, 务必使用scanf("%s", ....)的方式 输入格式 共两行,一行一个二进制正整数...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼//数组倒置函数void Big_int::reversal(){int i,temp;for(i=0;i{temp=addend[i];...}}//加法器函数Big_int *adder(Big_int *p,Big_int *q){int i,x,y,Bit...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    //数组倒置函数

    void Big_int::reversal()

    {

    int i,temp;

    for(i=0;i

    {

    temp=addend[i];

    addend[i]=addend[bits-1-i];

    addend[bits-1-i]=temp;

    }

    }

    //加法器函数

    Big_int *adder(Big_int *p,Big_int *q)

    {

    int i,x,y,Bits,carry=0;

    Big_int *result;

    result=new Big_int;

    result->bits=0;

    p->reversal();

    q->reversal(); //加数数组倒置,方便计算

    cout<addend<

    cout<addend<

    Bits=p->bits>q->bits?p->bits:q->bits;

    cout<

    for(i=0;i

    {

    if(i>=p->bits)

    p->addend[i]='0';

    if(i>=q->bits)

    q->addend[i]='0';

    x=p->addend[i]-'0';

    y=q->addend[i]-'0';

    result->addend[i]=(x+y+carry)%10+'0';

    result->bits++;

    if(x+y+carry>9)

    carry=1;

    else

    carry=0;

    }

    if(carry==1)

    {

    result->addend[result->bits]='1';

    result->bits++;

    }

    else

    result->addend[result->bits]='\0';

    result->reversal();

    return result;

    }

    展开全文
  • C语言计算二进制加法

    千次阅读 2020-09-07 21:18:12
    文章目录前言一、C语言二进制加法计算测试结果 前言 在C语言中计算二进制数的加法 一、C语言二进制加法计算 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <...

    前言

    在C语言中计算二进制数的加法


    一、C语言中二进制数加法计算

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    
    int main()
    {
        int k[100];//存放计算后的二进制数
        char s1[100],s2[100];//输入的两个二进制数
        int sum,sum1=0,sum2=0;
        int len1,len2;//两个字符数组的长度
        int i=0;
        gets(s1);
        gets(s2);
        len1 = strlen(s1);
        len2 = strlen(s2);
        while(s1[i]!='\0')//第一个二进制数转化为十进制数
        {
            sum1+= pow(2,len1-1)*(s1[i]-48);
            len1--;
            i++;
        }
        i=0;
        while(s2[i]!='\0')//第二个二进制数转化为十进制数
        {
            sum2+= pow(2,len2-1)*(s2[i]-48);
            len2--;
            i++;
        }
        i=0;
        sum = sum1+sum2;//两数和
        while(sum)//和转化为二进制
        {
            k[i] = sum%2;
            sum/=2;
            i++;
        }
        i=i-1;
        while(i>=0)//输出
        {
            printf("%d",k[i]);
            i--;
        }
        return 0;
    }
    

    测试结果

    在这里插入图片描述

    展开全文
  • C语言实现二进制运算器

    千次阅读 2019-04-26 23:02:44
    先将输入的两个二进制数转换成十进制,然后再进行相应的运算,最后将结果转换成二进制的形式打印。 运行逻辑示意图 函数调用示意图 源码: #include <stdio.h> #include <string.h> #include <...

    设计思路

    先将输入的两个二进制数转换成十进制,然后再进行相应的运算,最后将结果转换成二进制的形式打印。

    运行逻辑示意图

    运算器程序执行逻辑

    函数调用示意图

    函数调用示意图

    源码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define BINARY_SIZE 32
    
    typedef enum{ false = 0, true } Bool;
    
    /* function interface */
    /* tool */
    int _my_pow(int x, int y);
    /* bottom */
    void binary_print(int data);
    int _2to10(char* data);
    /* arthmetic */
    void my_add();
    void my_sub();
    void my_mul();
    void my_div();
    /* main logic */
    void MainLoop();
    
    /* test case */
    int main(){
    	MainLoop();
    	return 0;
    }
    
    /* function realize */
    void MainLoop(){
    	printf("--- 二进制整数运算器 ---\n");
    	printf("-----------------------\n");
    	Bool IsWork = true; //初始化运算器工作状态
    	char option;
    	while (IsWork){
    		printf("选择要进行的运算/操作:\n  [1.加法 | 2.减法 | 3.乘法 \
    				| 4.除法 | 5.清屏 | 6.退出]\n");
    		printf(">>>");
    		option = getchar();
    		fflush(stdin); //清空输入缓冲区
    		switch (option){
    		case '1': my_add();
    			break;
    		case '2': my_sub();
    			break;
    		case '3': my_mul();
    			break;
    		case '4': my_div();
    			break;
    		//如果在Linux平台下编译,将system内改为“clear"
    		case '5': system("cls"); 
    			break;
    		case '6':
    			IsWork = false;
    			break;
    		default:
    			printf("请在本软件支持范围内选择!\n\n");
    			system("pause"); //如果在Linux平台下编译,去掉这行代码
    		}
    	}
    }
    
    void my_add(){
    	char binary_num1[BINARY_SIZE] = { 0 };
    	char binary_num2[BINARY_SIZE] = { 0 };
    	printf("输入第一个加数:");
    	scanf("%[^\n]%*c", binary_num1);
    	int num1 = _2to10(binary_num1);
    	printf("输入第二个加数:");
    	scanf("%[^\n]%*c", binary_num2);
    	int num2 = _2to10(binary_num2);
    
    	int result = num1 + num2;
    
    	printf("运算结果为:");
    	binary_print(result);
    	printf("\n\n");
    }
    
    void my_sub(){
    	char binary_num1[BINARY_SIZE] = { 0 };
    	char binary_num2[BINARY_SIZE] = { 0 };
    	printf("输入被减数:");
    	scanf("%[^\n]%*c", binary_num1);
    	int num1 = _2to10(binary_num1);
    	printf("输入减数:");
    	scanf("%[^\n]%*c", binary_num2);
    	int num2 = _2to10(binary_num2);
    
    	int result = num1 - num2;
    	printf("运算结果为:");
    	binary_print(result);
    	printf("\n\n");
    }
    
    void my_mul(){
    	char binary_num1[BINARY_SIZE] = { 0 };
    	char binary_num2[BINARY_SIZE] = { 0 };
    	printf("输入第一个因数:");
    	scanf("%[^\n]%*c", binary_num1);
    	int num1 = _2to10(binary_num1);
    	printf("输入第二个因数:");
    	scanf("%[^\n]%*c", binary_num2);
    	int num2 = _2to10(binary_num2);
    
    	int result = num1 * num2;
    
    	printf("运算结果为:");
    	binary_print(result);
    	printf("\n\n");
    }
    
    void my_div(){
    	char binary_num1[BINARY_SIZE] = { 0 };
    	char binary_num2[BINARY_SIZE] = { 0 };
    	printf("输入被除数:");
    	scanf("%[^\n]%*c", binary_num1);
    	int num1 = _2to10(binary_num1);
    	printf("输入除数:");
    	scanf("%[^\n]%*c", binary_num2);
    	int num2 = _2to10(binary_num2);
    	if (!num2){ //如果除数为0,则退出运算
    		printf("除数有误!!!\n");
    		system("pause"); //如果在Linux平台下编译,去掉这行代码
    		exit(EXIT_FAILURE);
    	}
    
    	int result = num1 / num2;
    	printf("运算结果为:");
    	binary_print(result);
    	printf("\n\n");
    }
    
    int _my_pow(int x, int y){
    	int result = 1;
    	while (y){
    		if (y & 1){
    			result *= x;
    		}
    		y >>= 1;
    		x *= x;
    	}
    	return result;
    }
    
    int _2to10(char* data){
    	int size = (int)strlen(data) - 1;
    	int conversion_result = 0;
    	for (int i = size; i >= 0; --i){
    		int tmp = data[i] - 48;//将字符‘1’/‘0’转换成数字1/0
    		//_my_pow函数也可以用库函数pow替代,不过需要引入头文件<math.h>
    		conversion_result += tmp * _my_pow(2, size - i);
    	}
    	return conversion_result;
    }
    
    void binary_print(int data){
    	char tmp[BINARY_SIZE] = { 0 };
    	if (data > 0){
    		for (int i = 0; data; ++i){
    			if (data % 2 == 0)
    				tmp[i] = '0';
    			else
    				tmp[i] = '1';
    			data >>= 1;
    		}
    		for (int i = strlen(tmp) - 1, j = 0; i >= 0; --i)
    			printf("%c", tmp[i]);
    		return;
    	}
    	else if (data < 0){
    		//这里用int用32位表示
    		data = -data; //将data变成正数
    		data = ~data + 1; //将data变成data的补码
    		//用位运算获取data的每一位,赋给数组
    		for (int i = 31, j = 0; i >= 0; --i, ++j){
    			tmp[j] = ((data >> i) & 1) ? '1' : '0';
    		}
    		//正序打印数组即可
    		for (int i = 0; i < 32; ++i)
    			printf("%c", tmp[i]);
    		return;
    	}
    	printf("0");
    }
    
    展开全文
  • C语言二进制相加输出二进制

    千次阅读 2019-11-19 21:42:50
    二进制相加输出二进制 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b =...

    二进制相加输出二进制

    给定两个二进制字符串,返回他们的和(用二进制表示)。

    输入为非空字符串且只包含数字 1 和 0。

    示例 1:

    输入: a = “11”, b = “1”
    输出: “100”

    示例 2:

    输入: a = “1010”, b = “1011”
    输出: “10101”

    #include<stdio.h>
    #include<string.h>
    main()
    {
    	char a[101],b[101];
    	int m,n,i,j,k;
    	scanf("%s",a);
    	scanf("%s",b);
    	m=strlen(a);
    	k=n=strlen(b);
    	if(m>k) k=m;
    	a[k+1]=0;
    	for(i=0;i<k;i++)
    	    a[k-i]=a[m-i-1];
    	for(i=0;i<=k-m;i++)
    	    a[i]='0';
    	for(i=0;i<=k;i++)
    	    b[k-i]=b[n-i-1];
    	for(i=0;i<=k-n;i++)
    	    b[i]='0';
    	j=0;
    	for(i=0;i<k;i++)
    	{
    		j=(a[k-i]+b[k-i]+j-96);
    		a[k-i]=j%2+48;
    		j=j/2;
    	}
    	a[0]=j+48;
    	if(a[0]=='0')
    	    printf("%s\n",a+1);
    	else
    	    printf("%s\n",a);
    }
    展开全文
  • C语言二进制求补码过程中取反后再加1,那个1是怎么加的?跪求!以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!C语言二进制求补码过程中取反后再...
  • 二进制运算(正码、反码、补码)机器数(机器存储的数)​ 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1//比如byte类型是一个字节...
  • 原标题:二进制十进制十六进制在阿程学习C语言的过程中,我的室友和我说他不懂什么是二进制,什么是十进制。在这里,阿程将告诉大家什么是二进制,十进制和十六进制:我们平时使用的数字都是由 0~9 共十个数字组成的...
  • 计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制...
  • 两个二进制字符串,返回它们的和(用二进制表示)。 输入为非空字符串且只包含数字1和0(即不必考虑输入非法情况)。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 1000 ...
  • 【相关学习推荐:C语言教程视频】C语言中位运算符有:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中...
  • 我需要实现4位二进制纹波进位加法器,4位二进制提前进位生成器和4位提前进位进位加法器。从一个完整加法器的真值表和一个Karnaugh映射中,我获得了Sum和Carry Out输出的功能。对于总和,我收到了A xor B xor进行。...
  • 比如05,0237所以C语言没有二进制输入,最多可用函数去实现。八进制数的表达方法C/C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0(数字0),如:123是十进制,但0123则表示采用八进制。这就是八进制数...
  • word格式word格式《电子设计自动化》实验报告实验六 实验名称:8位...二、实验内容设计并实现一个由两个4位二进制并行加法器级联而成的8位二进制并行加 法器。要求编写4位加法器的VHDL语言程序,顶层8位加法器的设...
  • 二进制加法

    2020-04-09 11:59:40
    32位二进制数 X ,对其进行X+1,X+3操作,并输出。注意不能忽略前导0。 输入第一行,一个整数 T ,代表测试数据组数。接着 T 行,输入32为二进制数输出对每组测试数据。 输出 两行,第一行为X+1,第二行为X+3. 测试样例...
  • 二进制加法 给定两个二进制数组成的字符串,计算他们的和。 他们的和依然是字符串。 例如: a = “11” b = “1” 返回&amp;quot;100&amp;quot;. 注意:千万别想着将二进制转换成10进制,计算以后再...
  • 该程序主要完成Linux命令行G++环境下编译并执行二进制加法的功能。该程序支持命令行直接向main函数传递参数。
  • 简单的c语言课程设计二进制计算器,可以实现简单的二进制加法、减法、和乘法(不包含除法)。
  • 本博客废除,请查阅读博客:JSK-61 二进制加法【大数】   二进制加法 给定两个二进制数组成的字符串,计算他们的和。 他们的和依然是字符串。 例如: a = "11" b = "1" 返回"100&...
  • 题目描述:说明浮点数加法操作的原理,并编写代码,在二进制与汇编这一级别进行分析。 一、 浮点数存储原理 如二进制1.0110100111,我们肯定很希望在计算机中有足够的空间,分别存储二进制浮点数的各位与小数点...
  • 在学习C语言之前,我们首先必须要掌握二进制的思想以及数据的储存知识,这对于我们的编程来说十分的重要!一般来说,大家平时使用的数字都是由0~9共十个数字组成的,例如1、9、10、297、952等,一个数字最多能表示九...
  • 而要实现二进制加法最关键的步骤就是如何实现进位和相加(仅停留与本位的不进位加法)。 1.用"与"来提取进位 由AND(与,下文皆称为AND)的运算性质可以得到只有当两个数都为1时才能运算得1正好提取了进位,只要向左...
  • 考察:文件,字符串处理,进制加法#define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;memory.h&gt; #include&lt;math.h&gt; #...
  • 浅谈补码与二进制加法

    千次阅读 2016-12-27 11:18:52
    1、C语言之父,谭浩强老司机曾经教导我们,正数在计算机中的二进制表示,原码、反码、补码都是相同的,等于原码。 2、负数在计算机中,以其补码的形式表示。 3、以signed short举例,为什么计算机中,它的范围是-...
  • 进制是一种计数的方式,数值的表示形式常见的进制十进制、二进制、八进制、十六进制进制书写的格式和规律十进制 0、1、2、3、4、5、6、7、8、9 逢十进一二进制 0、1 逢二进一在C语言中, 如果想用二进制表示某个数, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,456
精华内容 5,382
关键字:

c语言实现二进制加法

c语言 订阅