📄 main.cpp
字号:
#include "stdio.h"
#include "math.h"
#define N 18
void dtob(unsigned int, int*, char*);
unsigned int btod(int*);
void badd(int*, int*, int*);
void show(int*, char*);
void main()
{
unsigned int x, y;
static int xb[N], yb[N], resultb[N], i;
printf("input the decimal value X and Y:");
scanf("%d %d", &x, &y);
dtob(x, xb, "X");
dtob(y, yb, "Y");
badd(xb, yb, resultb);
printf("\nResult convert to be decimal is:%4d\n", btod(resultb));
}
void dtob(unsigned int n, int *nb, char *s)
{
int i = N;
while(n)
{
nb[--i] = n & 1;
n >>= 1;
}
nb[--i] = -1;
show(nb, s);
}
void badd(int *xb, int *yb, int *resultb)
{
int i = 0;
while(xb[i] != -1 && yb[i] != -1)
i++;
resultb[i++] = -1;
for(; i < N; i++)
{
if(xb[i] == -1)
resultb[i] = yb[i];
else if(yb[i] == -1)
resultb[i] = xb[i];
else
resultb[i] = xb[i] + yb[i];
}
for(i = N; resultb[i] != -1; i--)
{
if(resultb[i] > 1)
{
resultb[i] %= 2;
if(resultb[i-1] == -1)
{
resultb[i-1] = 1;
resultb[i-2] = -1;
}
else
resultb[i-1] += 1;
}
}
show(resultb, "Result");
}
unsigned int btod(int* nb)
{
static unsigned int i, sum;
for(; nb[i] != -1; i++);
for(++i; i < N; i++)
sum += nb[i]*(int)pow(2, N-1-i);
return sum;
}
void show(int *nb, char *s)
{
int i;
printf("\n%s\t= ", s);
for(i = 0; nb[i] != -1; i++);
for(++i; i < N; i++)
printf("%d", nb[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -