永发信息网

C++中怎么实现二进制的加减法?

答案:4  悬赏:30  手机版
解决时间 2021-11-08 13:18
  • 提问者网友:爱唱彩虹
  • 2021-11-08 02:53
C++中怎么实现二进制的加减法?
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-11-08 04:20
    加法没有进制问题,进制只是显示的格式而已,如果你有一个二进制字符串表示的整数,要实现加法,最好先把二进制字符串转化了整数,然后加法,然后再用String.Format格式化为二进制或者十进制或者十六进制, 
    通过函数convert.ToInt32(value,frombase)将进制转换为十进制,
    运算之后,
    再用函数conver.Tostring(intvaluse,tobase)转换为相应的进制即可。
     
全部回答
  • 1楼网友:摆渡翁
  • 2021-11-08 06:11
#include
02

03
#define ARRAYSIZE 16
04

05
void binaryadd(int *array1, int *array2, int *array3)
06
{
07
int carry = 0;
08
int i;
09

10
for (i = ARRAYSIZE - 1; i >= 0; --i) {
11
array3[i + 1] = array1[i] ^ array2[i] ^ carry;
12
carry = ((array1[i] ^ array2[i]) & carry) | (array1[i] & array2[i]);
13
}
14
array3[i + 1] = carry;
15
}
16

17
void printarray(int *array, int size)
18
{
19
int i;
20
for (i = 0; i < size; ++i)
21
printf("%d ", array[i]);
22
printf("\n");
23
}
24

25
main()
26
{
27
int i;
28
int array1[ARRAYSIZE] = {0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0};
29
int array2[ARRAYSIZE] = {0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0};
30
int array3[ARRAYSIZE+1] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
31

32
binaryadd(array1, array2, array3);
33

34
printf(" ");
35
printarray(array1, ARRAYSIZE);
36
printf(" ");
37
printarray(array2, ARRAYSIZE);
38
printarray(array3, ARRAYSIZE+1);
39
}追问这个。。。不过还是谢谢啦
  • 2楼网友:蓝房子
  • 2021-11-08 05:52
直接声明为二进制数是不可能的~ 计算机内部都是二进制,十进制二进制都只是数的表示形式而已。
我想的是写个函数先把输入的字符串转成整数,算完了再按二进制输出。
正在弄代码,明早再说吧,困了追问谢谢啦,麻烦你了
  • 3楼网友:摆渡翁
  • 2021-11-08 05:21
额 能具体点吗? 比如 input 是什么 output是什么。追问就是说:我如何输入两个数,是它们是二进制的,而不是十进制的。(比如a=1010和b=思路是:使用STL中的vector容器,分别定义A和B,分别保存两个二进制数,然后逐位相加,计算进位,然后把计算的结果保存在vector容器C中。用保存位数少的容器的长度作为循环条件,然后逐位相加,等循环结束后,再遍历较长二进制数的剩余位,插入到容器C中即可。
思路如上,可以尝试自己编写试试。
这种题类似于两个超长数字相加,比如122231241492894081908+12939127498127490812,就类似于二进制的计算,只是进制不同,一个是10,一个是2。但是算法是一样的。

供参考。追问谢谢,但还是不懂。我不用超长数字相加,只要算出当a=100,b=10时a/b=10就行追答看来你是不想自己动手写,想要源码。我这有输入十进制,然后转换成二进制的。需要修改一下。不过今天太晚了。sorry追问好吧,没关系的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯