算法导论-二进制数组相加
2016-05-24 22:50
471 查看
算法导论-二进制数组相加
今天介绍一个算法导论中的算法,是将数组A和B中的二进制数相加,存到数组C中,需要考虑进位。
下面是具体的C语言算法:
main测试:
资料:https://yunpan.cn/cS6fR3qUUtxdA 访问密码 9fb4
欢迎指正Bug。
今天介绍一个算法导论中的算法,是将数组A和B中的二进制数相加,存到数组C中,需要考虑进位。
下面是具体的C语言算法:
#include /* 二进制数组加法算法 输入:数组A, B, C和数组A的长度(A的长度等于B的长度)。 输出:将A和B数组中的二进制数据相加后存到数组C中对应的索引位置,可以有进位。 */ void BinaryAdd(int* A, int* B, int* C, int length) { int flag = 0;//进位标志 int key = 0;//每次计算的结果,加上进位 for (int i = 0; i < length; i++) { key = A[i] + B[i] + flag; //数组C存放二进制数,只能有0,1两种值 C[i] = key % 2; //key大于1表示有进位 if (key > 1) { flag = 1; //没有进位,flag清零,防止下次进行错误进位 }else { flag = 0; } //有进位就向前进一位 if (flag) { C[i + 1] = 1; } } } /*显示数组元素*/ void show(int* X, int length) { for (int i = 0; i < length; i++) { printf(" %d", X[i]); } } int main() { int A[] = {1, 0, 0, 1}; int B[] = {1, 0, 1, 1}; int C[] = {0, 0, 0, 0, 0}; // 0 1 1 0 1 BinaryAdd(A, B, C, 4); show(C, 5); return 0; }
main测试:
资料:https://yunpan.cn/cS6fR3qUUtxdA 访问密码 9fb4
欢迎指正Bug。
相关文章推荐
- java int与integer的区别
- 前端面试题
- C++上机作业6
- mysql 优化常用语句
- nth-child选择器
- C#下使用protobuf(Google Protocol Buffers)
- Android笔记:OptionsMenu
- CSS3伪类选择器
- 人一切的痛苦,本质上都是对自己的无能的愤怒。──王小波
- 第九周项目二-我的数组类
- js图片自动循环播放
- c++课后作业
- 团队第二次冲刺(1-10天)
- 自定义控件三部曲之绘图篇(六)——Path之贝赛尔曲线和手势轨迹、水波纹效果
- windows下tree命令列出文件目录树
- SQL Server代理警报
- 使用PowerDesigner画ER图详细教程
- hdu 5700 区间交
- Eclipse Android 工程无法查看帮助文档
- CSS3属性选择器