當前位置:首頁 » 編程語言 » 二進制加法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;
}
//---------------------------------------------------------------------------

熱點內容
通過域名訪問內網 發布:2025-01-18 16:01:39 瀏覽:275
md5加密後的密碼是什麼意思 發布:2025-01-18 15:50:16 瀏覽:193
如何qq空間訪問許可權 發布:2025-01-18 15:49:30 瀏覽:532
matlab遺傳演算法約束 發布:2025-01-18 15:31:33 瀏覽:910
果凍java 發布:2025-01-18 15:25:59 瀏覽:696
電腦與時間伺服器同步間隔 發布:2025-01-18 15:21:28 瀏覽:55
蘋果手機apple登錄密碼在手機哪裡 發布:2025-01-18 15:13:43 瀏覽:381
吃雞去哪裡下手游安卓 發布:2025-01-18 15:10:59 瀏覽:669
東方財富dk指標源碼 發布:2025-01-18 14:45:53 瀏覽:436
陌陌登陸密碼是什麼 發布:2025-01-18 14:36:54 瀏覽:848