目录
1. 全加器
1.1 真值表
a(被加数) | b(加数) | c(进位) | s(本位) | e(下一位进位) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
1.2 代码中用数学表达式描述真值表
本位: s = (a + b + c) % 2;
进位: e = (a + b + c) / 2;
1.3 数电中用门来表示上述表格描述真值表
s = a ⊕ b ⊕ c;
e = ab + c(a ⊕ b);
2. 异或
2.1 基本规则
相同为0,不同为1。
2.2 异或应用场景
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
class Solution {
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
}