温馨提示:此文章仅供个人学习使用,不得用作其他用途,转载请注明出处!

文章目录

  • 1. 半加器
  • 2.全加器
  • 3. 代码实现:

1. 半加器

最简单的加法电路是拿 2个bit 加在一起(bit是0或1) 有2个输入: A和B , 1个输出: 就是两个数字的和
需要注意的是 A、B 、输出 。这3个都是单个bit(0或1) **输出只有四种可能。前三个是: 0+0=0、 1+0=0、 0+1=1 ** 记住二进制里 ,1与true相同,0与false相同
这组输入和输出,和XOR门(异或门:相同为0,不同为1)的逻辑完全一样

但第四个输入组合,1+1,是个特例;1+1=2(显然),但进制里没有2,实际上,二进制1+1的结果是0, 1进到了下一位
XOR门的输出,只对了一部分,1+1输出0。 但我们需要额外的线代表“进位。” 只有输入是1和1时,进位才是“true”。因为算出来的结果用1个bit存不下,方便的是,我们刚好有个逻辑门能做这个事。 AND门,只有当两个输入都为“true”,输出才为“true”(“全1才1”);所以我们把它加到电路中,叫做“半加器”

把半加器封装成一个单独组件:

推荐学习视频: 10分钟速成课:计算机科学

如何理解逻辑门?点击链接查看:https://blog.csdn.net/weixin_43527871/article/details/97398886

如何计算二进制加法?点击链接查看:https://blog.csdn.net/weixin_43527871/article/details/97400100

2.全加器

如果想处理超过1+1的计算,我们需要“全加器”
半加器输出了进位,意味着我们计算下一列的时候,还有之后每一列,我们得加三个位在一起,并不是两个。 全加器复杂了一点点 有三个输入:A,B, C(都是一个bit)

所以最大可能是1+1+1, “总和”1 “进位”1 所以要两条输出线:“总和” 和 “进位”
我们可以用半加器做全加器 我们先用半加器将A和B相加 然后把C输入到第二个半加器 最后用一个 OR门 (或门:有1则1,全0才0) 检查进位是不是true 这样就做出了一个全加器

3. 代码实现:

#include<stdio.h>int CARRY=0;
int SUM=0;int AND(int A, int B);
int OR(int A, int B);
int XOR(int A, int B);void HALF_ADDER(int A,int B);
void FULL_ADDER(int A,int B,int C);int main(void)
{int A,B,C=0;int S;printf("请输入状态A与状态B: ");scanf("%d%d",&A,&B);S=AND(A,B);printf("\n执行 与门  A*B  操作为:");printf("%d",S);S=OR(A,B);printf("\n执行 或门  A+B  操作为:");printf("%d",S);HALF_ADDER(A,B);printf("\n半加器 执行 加法 操作 进位 为:");printf("%d",CARRY); printf("\n半加器 执行 加法 操作 和 为:");printf("%d",SUM); FULL_ADDER(A,B,C);printf("\n全加器 执行 加法 操作 进位 为:");printf("%d",CARRY); printf("\n全加器 执行 加法 操作 和 为:");printf("%d",SUM);return 0;
}/**/
int AND(int A, int B)//与门
{int AandB;if(A*B==0){AandB=0;}elseAandB=1;return AandB;
}int OR(int A, int B)//或门
{int AorB;if(A+B==0){AorB=0;}elseAorB=1;return AorB;
}int XOR(int A, int B)//异或门
{int AxorB;if(A==B){AxorB=0;}elseAxorB=1;return AxorB;
}void HALF_ADDER(int A,int B)//半加器
{CARRY=AND(A,B);SUM=XOR(A,B);
}void FULL_ADDER(int A,int B,int C)//全加器
{int FULL_CARRY;HALF_ADDER(A,B);FULL_CARRY=CARRY;HALF_ADDER(SUM,C);CARRY=OR(FULL_CARRY,CARRY);
} /**/

C语言 半加器与全加器 详解相关推荐

  1. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解

    原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...

  2. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解

    C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...

  3. C语言解决约瑟夫问题详解的代码

    C语言解决约瑟夫问题详解的代码 参考文章: (1)C语言解决约瑟夫问题详解的代码 (2)https://www.cnblogs.com/odsxe/p/10791049.html (3)https:/ ...

  4. c语言中快排函数,c语言快排函数详解

    c语言快排函数详解 int cmp(const void *a, const void *b) 返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 ...

  5. c语言printf函数中的格式控制字符串,C++_C语言格式化输入输出函数详解,一:格式输出函数printf() 1 - phpStudy...

    C语言格式化输入输出函数详解 一:格式输出函数printf() 1.调用形式一般为:printf("格式化控制字符串",输出表列): 2.格式化控制字符串用于指定输出格式,它有三种 ...

  6. C语言:JSON格式详解

    C语言:JSON格式详解 C语言:cJSON库用法详解 C语言:使用cJSON库构造JSON C语言:使用cJSON库解析JSON字符串 JSON 简介 JSON全称 JavaScript Objec ...

  7. c语言 is函数,关于C语言回调函数的详解~

    原标题:关于C语言回调函数的详解~ 01 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义.我在百度上搜了一下, ...

  8. java文档注释定界符_c语言的注释定界符详解

    c语言的注释定界符详解 c语言的注释定界符是什么 1.最早期的C语言注释是:/* */ 2.后来又增加的行注释:// 其中/**/是多行注释,//是单行注释. 需要注意的是:C 语言的注释并不是可以出 ...

  9. 【原创-更新完毕】|日历拼图游戏的解决方案(C语言-进阶应用)-详解连载2

    [原创]|日历拼图游戏的解决方案(C语言-进阶应用)-详解连载1_zhuyi8120的博客-CSDN博客 [原创]|日历拼图游戏的解决方案(C语言-进阶应用)-详解连载3_zhuyi8120的博客-C ...

最新文章

  1. 管理软件售前咨询与企业架构
  2. 计算机设备布局图,针对不同设备类型创建仪表板布局
  3. exit函数的头文件问题
  4. MySQL(6)视图
  5. java 将list按指定大小等分,最后多余的单独一份
  6. android ble 发送指令,Android – 如何通过蓝牙低能耗(BLE)链接发送数据?
  7. leetcode刷面试题(面试题08合集)
  8. C语言英尺和英寸换算米
  9. android studio超级玛丽源码,VR版NES模拟器来了,超级玛丽、魂斗罗都支持
  10. 华为云教程(云数据库RDS)
  11. 华为中兴和中国政府可准备两项法律反击
  12. void test();
  13. 利用JS调用手机摄像头小功能源码
  14. 编码理解 | 卷积的实现和卷积神经网络
  15. 坑爹的hiredis API使用
  16. 堆栈内存的分析以及作用域的详解
  17. linux系统优化脚本,linux系统优化脚本详解
  18. 【H5】H5与APP对接跳转
  19. 原创 人脸检测 RetinaFace
  20. Sci-Hub是什么?

热门文章

  1. Web前端第三阶段学习
  2. W3C发布HTML5正式推荐标准 开放Web平台迎来新的里程碑
  3. 服务器搭建hue_Hue安装配置实践
  4. amazon mechanical turk介绍
  5. STC8通过SPI读写W25Q128
  6. 移动硬盘盒芯片(SATAIII)
  7. flink-cdc 环境搭建 version 1.14.3
  8. html5如何快速选择工具,Photoshop教程:在PS中如何使用快速选择工具建立有效选区...
  9. hpux oracle INS-06006 PRVF-7546
  10. 微信开发 -- 自定义菜单