当前位置:首页 » 编程语言 » 二进制加法c语言

二进制加法c语言

发布时间: 2022-04-03 07:16:35

⑴ 用c语言编写:将二个二进制数相加

仅供参考

⑵ C语言二进制怎么表示

c++中负数存储时,不是简单的将符号位置为1,而是采用补码的形式存储的,负数最高位为符号位,也就是1,其余全部取反,然后再加1。

假如操作系统是32位,-1的二进制存储不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。

(2)二进制加法c语言扩展阅读:

C语言面向过程,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。

⑶ 二进制加法C语言实现 debug

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>

#defineIntialStringLength30
#definetoSTR(x)_toSTR(x)
#define_toSTR(x)#x
#defineIntMax(x,y)((x)>=(y)?(x):(y))
#defineClearStdin()while(getchar()!=' ')continue;

staticchar*addBinary(constchar*a,constchar*b);

intmain(intargc,char*argv[])
{
chara[IntialStringLength+1],b[IntialStringLength+1];
printf("Inputa:");
scanf("%"toSTR(IntialStringLength)"s",a);ClearStdin();
printf("Inputb:");
scanf("%"toSTR(IntialStringLength)"s",b);ClearStdin();
char*result;//没必要分配result空间
if((result=addBinary(a,b))!=NULL)
{
printf("Result:%s ",result);
free(result);
}
return0;
}

staticchar*addBinary(constchar*a,constchar*b){
longn=strlen(a)-1,m=strlen(b)-1;
intc=0,d,e;
char*sum;
if((sum=malloc(IntMax(n,m)+2))!=NULL)
{
//calloc和赋值''没必要
char*result;
if((result=malloc(IntMax(n,m)+2))!=NULL)
{
for(e=0;n>=0||m>=0||c>0;n--,m--,e++)//判断条件你看一下,原来那个逗号有问题
{
d=(n>=0?((void)assert(a[n]=='0'||a[n]=='1'),a[n]):'0')-'0'
+(m>=0?((void)assert(b[m]=='0'||b[m]=='1'),b[m]):'0')-'0'
+c;//d转化为值
c=d/2;//c是进位值
sum[e]=d%2+'0';
}
sum[e]='';

/*下面这部分和你的不同,其实就是把sum字符串反转一下*/

longstringLengthOfSum=strlen(sum);
for(size_tindex=0;index<stringLengthOfSum;index++)
result[index]=sum[stringLengthOfSum-1-index];
result[stringLengthOfSum]='';

free(sum);
returnresult;
}
free(sum);
}
returnNULL;
}

⑷ C语言二进制加法

其实不难的。除非玩单片机,否则一开始没必要学二进制计算,遇到的时候了解一下即可。

⑸ c语言题目二进制加法求指教

1.首先不超过2的31次方,则只需要32位就够了,不需要那么大的数组。
2.x,y是int数组,'\0'就是0,怎么能作为x,y的结束
3.你不是一开始就算出来x,y的长度了吗,l1,l2,通过这个长度不就知道相加处理多少位了,
而且哪个长,最后再单独处理哪个不就行了。
或者在一开始,就把长的放在x中,短的放在y中,最后总是处理x。

⑹ 怎样修改这个二进制加法C语言程序,使之实现一次加2的操作

while循环里 led--;改成led=led-2;

⑺ C语言如何实现二进制相加问题

用数组来做就是了,byte数组或bit数组,先将数模2运算得到各位的值,存入数组中,之后一个循环来做二进制加减法就成了,溢出的判断也很简单,根据两个运算数的模与他们的符号,还有所进行的运算,用几个if语句就解决了

⑻ C语言二进制里边"加法"和"按位与"有啥区别

||就是逻辑或,两个事件或(当如加法1+0=1),&&逻辑与,两个事件与(当如乘法1*0=0;只有1*1=1);|按位或(就数据每一位连加,只要有一位不是零,就不是零);&按位与(就当如每位相乘后在相加,只有对应相互不是零才不是零)

⑼ 4位二进制加法 c语言程序如何编写 急用

//...
//自己编译下试试。
//专门为你写的啊,如果可用一定要给分哦。
#include <stdio.h>
#include <stdlib.h>

#define ERR printf
/*
char *myItoa (int n,const char * ch)
{
¡¡sprintf(ch,"%d",n);
¡¡return ch;
}
*/
/*
int binA2Dec(char * ch,int len)
{
int sum,i;
sum = 0;

for(i=len-1;i>=0;i--)
{
sum = sum*2 + (ch[i] - '0');
}
return sum;
}
*/

#define MAX_BIT 4 //可以定义任意位的加减。
int M_num(int base,int b)
{
int tmp;
int multi = 1;

for(tmp=b;tmp;tmp--)
multi = multi * base;

return multi;
}

typedef enum
{
false,
true
}bool;

bool checkBuf(char * ch)
{
int i,j;

if(ch[MAX_BIT] != 0)
{
i = MAX_BIT;
ERR("\nOnly %d bits need!!\n",i);
return false;
}

for(i=0;i<MAX_BIT;i++)
{
if((ch[i] != '0') && (ch[i] != '1') && (ch[i] != 0) )
{
ERR("\nInput binary data,you must reInput!\n");
return false;
}
if(ch[i] == 0)
{
for(j=i-1;j>=0;j--)
{
ch[j+1] = ch[j];
}
ch[0] = '0';
}
}
return true;
}

int bin2Dec(int num)
{
int sum,fig,tmp,numNext;

// Initialization.
numNext = num;
sum = 0;
tmp = 1;

for(;;)
{
fig = numNext%10; // Get lowest number
sum = sum + fig*tmp;

tmp = tmp * 2;
numNext = numNext/10;
if(!numNext)
return sum;
}
}

int dec2bin(int num)
{
int sum,fig,tmp,numNext;

//Initialization
numNext = num;
sum = 0;
tmp = 1;

for(;;)
{
fig = numNext%2; //get current parity digit.
sum = sum + fig*tmp; //sum of demical number add parity.

tmp = tmp*10;
numNext = numNext/2;
if(!numNext)
return sum;
}
}

int main(int argc, char *argv[])
{
char Num1[MAX_BIT+1],Num2[MAX_BIT+1],sum[MAX_BIT+1];
int Number1,Number2,sumNum;
int i;

//Initialize the arrry.
for(i =0;i<(MAX_BIT+1);i++)
{
Num1[i]= Num2[i] = 0;
}

//Process to get input number
//And check the validity of input
printf("\nPlease input number1:\n");
scanf("%s",Num1);
if(!checkBuf(Num1))
{
system("PAUSE");
return 0;
}

printf("\nPlease input number2:\n");
scanf("%s",Num2);
if(!checkBuf(Num2))
{
system("PAUSE");
return 0;
}

// Get number from array.
Number1 = atoi(Num1);
Number2 = atoi(Num2);

// Convert binary data to demical data
Number1 = bin2Dec(Number1);
Number2 = bin2Dec(Number2);

// Sum of two number.
sumNum = Number1 + Number2;
// Convert from demical data to binary data.
sumNum = dec2bin(sumNum);

// Get char array
itoa(sumNum,sum,10);

// Output
if(sumNum >= M_num(10,MAX_BIT) )
{
sumNum=MAX_BIT;
printf("\nThe sum overflow %d bit ..",sumNum);
}

printf("\nthe sum is|%s|\n\n",sum);
system("PAUSE");
return 0;
}

⑽ 二进制数的运算 C语言程序运算

这个可以通过按位或运算来做:

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
int a=15<<4|15;/*1111B=15D*/
printf("%d",a);

return 0;
}
//---------------------------------------------------------------------------

热点内容
matlab遗传算法约束 发布:2025-01-18 15:31:33 浏览:909
果冻java 发布:2025-01-18 15:25:59 浏览:695
电脑与时间服务器同步间隔 发布:2025-01-18 15:21:28 浏览:54
苹果手机apple登录密码在手机哪里 发布:2025-01-18 15:13:43 浏览:380
吃鸡去哪里下手游安卓 发布:2025-01-18 15:10:59 浏览:668
东方财富dk指标源码 发布:2025-01-18 14:45:53 浏览:435
陌陌登陆密码是什么 发布:2025-01-18 14:36:54 浏览:848
海龟编译器代码 发布:2025-01-18 14:16:51 浏览:34
大闸蟹网站源码 发布:2025-01-18 14:12:19 浏览:105
电脑服务器日期怎么改 发布:2025-01-18 14:05:03 浏览:687