计算机科学中,基础运算运算都来自于二进制中的位运算。其中不免提到加法器,维基百科是这么定义的
在电子学中,加法器(英语:adder)是一种用于执行加法运算的数字电路部件,是构成电子计算机核心微处理器中算术逻辑单元的基础。在这些电子系统中,加法器主要负责计算地址、索引等数据。除此之外,加法器也是其他一些硬件,例如二进制数的乘法器的重要组成部分。
尽管可以为不同计数系统设计专门的加法器,但是由于数字电路通常以二进制为基础,因此二进制加法器在实际应用中最为普遍。在数字电路中,二进制数的减法可以通过加一个负数来间接完成。为了使负数的计算能够直接用加法器来完成,计算中的负数可以使用二补数(补码)来表示,具体的细节可以参考数字电路相关的书籍
对两个二进制数做相加,有以下规律
二进制加法
x | y | 和 | 进位 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
假设 x + y 相加用代码表示,那么就需要一个 sum 和 carry 分别表示和与进位。不过这个还不足够表示两个数相加。
仔细观察可以发现 x + y 的 sum 和 carry 其实分别是异或^
和与&
运算。如下:
异或
x | y | ^ |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
与
x | y | & |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
1 | // 二进制实现加法 |