【知乎】flechazo
https://www.zhihu.com/people/jiu_sheng
【CSDN】小柴带你学AutoSar总目录
https://blog.csdn.net/qianshang52013/article/details/138140235?spm=1001.2014.3001.5501
Autosar 系列教程:小柴带你学 AutoSar 总目录
# 小柴冲刺软考中级嵌入式系统设计师系列一、计算机系统基础知识(3)算数运算和逻辑运算
# 一、算数运算
# 1、二进制算术运算规则
加法 | 减法 | 乘法 |
---|---|---|
0+0=0 | 0-0=0 | 0*0=0 |
1+0=1 | 1-0=1 | 1*0=0 |
0+1=1 | 0-1=1 (借位) | 0*1=0 |
1+1=0 (进位) | 1-1=0 | 1*1=1 |
# 2、机器数的加减法运算
只设置加法器,将减法运算转换为加法运算来实现。
补码加法的运算法则
- 和的补码等于补码求和
- [X+Y] 补 = [X] 补 + [Y] 补
补码减法的方法
- 差的补码等于被减数的补码加上减数取负后的补码
- [X-Y] 补 = [X] 补 + [-Y] 补
由 [X] 补求 [-X] 补的方法
- [X] 补的各位取反(包括符号位),末尾加 1
一篇文章彻底理解原码反码和补码
https://zhuanlan.zhihu.com/p/649051242
# 3、溢出及判定
一旦运算结果超出所能表示的范围就会发生溢出。
0 1000001 + 0 1000011 = 1 0000100【显然正数 + 正数 = 负数是错误的❌】
溢出检测机制
- 双符号位判决法
- 进位判决法
- 根据运算结果的符号位和进位标志判别
- 根据运算前后的符号位进行判别
# 4、机器数的乘除运算
乘除法运算实现
- 纯软件方案
- 左移位、右移位逻辑电路实现
- 乘法器
# 5、浮点运算
①浮点加减运算
设有浮点数 X=M2^i , Y=N2^j , 求 X+Y 和 X-Y
- 对阶
- 求尾数和 / 差
- 结果规格化并判溢出
- 舍入
- 截断法
- 末位恒 1 法
- 0 舍 1 入法
- 溢出判别
②浮点乘除运算
阶码相加减、尾数相乘除。
# 二、逻辑运算
逻辑运算由 与 或 非 组成,其他运算都可以由这三种运算组成。
# 1、常用逻辑运算
# ①与
符号: AND、∩、∧、⋅
A | B | A·B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
# ②或
符号: OR、∪、∨、+
A | B | A+B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
# ③非
符号: Ā来表示对 A 的取反(啊这个符号好难找,后面就用!来代替了,毕竟代码里也是这样的)
!1 = 0
!0 = 1
# ④异或
符号: XOR、⊕
相同为 0,不同为 1
A⊕B = (!A ) * B + A * (!B)
# 常用的逻辑公式
名称 | 公式 | 公式理解 |
---|---|---|
交换律 | A + B = B + A<br />A * B = B * A | 交换一下无伤大雅 |
重叠律 | A + A = A<br />A * A = A | 是你是你还是你 |
结合律 | A + (B + C) = (A + B) + C<br />A * (B * C) = (A * B) * C | 先后顺序也都符合加减乘除的运算呢 |
互补律 | !A + A = 1<br />!A * A = 0 | !A 和 A 本身总有一个 0 和 1 因此 <br />0+1 = 1<br />0 * 1 = 0<br /> 很好理解 |
吸收律 | A + !AB = A + B | 前面有 A + !A = 1 因此这里就相当于看 B 了 <br />(1) 遍历 < br />B = 1 则 A + !AB = A + !A<br />B = 0 则 A + !AB = A<br />A = 1 则 A + !AB = A<br />A = 0 则 A + !AB = B<br /> 总结一下:A + B<br />(2) 公式推导 < br />A + !AB<br />= A (B+!B) + !AB<br />= AB + !AB + A!B<br />= B + A!B<br /> 即 A + !AB = B + A!B 注意这是在同一个等式中,所以 A 和 B 对结果的影响是同等重要的,那么 < br />A = 0 则 = B<br />A = 1 则 = 1<br />B = 0 则 = A<br />B = 1 则 = 1<br /> 好啦是不是就这样完结 |
分配律 | A * ( B + C ) = A * B + A * C<br />A + ( B * C ) = ( A + B) * ( A + C ) | 展开 <br />= A + A * B + A * C + B * C <br />= A * ( 1 + B + C) + B * C <br />= A + B * C |
0-1 律 | 0 + A = A<br />1 + A = 1<br />0 * A = 0<br />1 * A = A | 懒得解释 |
反演律 | !(A + B) = !A * !B<br />!(A * B) = !A + !B | ①<br />---A---\ <br /> -o-----<br />---B---/<br />②<br />---A-o---B-o---<br /> 很有意思哦,把并联关系转为串联 < br />①只要有一个 1 输出就为 0<br />②同上,仔细想想很有意思 |
对合律 | !!A = A | 懒得 + 1 |
其他公式 | AB + A!B = A<br />A + AB = A<br />AB + !AC + BC = AB + !AC<br />!(A ^ B) = !A ^ B = A ^ !B | A (B + !B)<br />A (1 + B)<br />ABC+AB!C+!ABC+!A!BC+ABC+!ABC = AB (C+!C)+!AC (B+!B)<br /> 异或 AB 相同为 0 不同为 1,那么不同的异或取反为 1 时原为 0,那将其中一个取反就已经改变了原本的 A |
从前上学的时候就有个习惯
老师在上面讲他的,我在下面推公式
然后就从小学到高中当了 9 年数学课代表,作业没写过,成绩也不算特别好哈哈哈
# 逻辑表达式及其化简
总而言之就是通过上述的公式来化简哒
试一下吧
--1------2------3------4-----5----6--
!(ABC)+!(AB)C+!A(BC)+A!(BC)+A!BC+ABC
-----12---------36----------45--
= !(AB)(!C+C)+(!A+A)BC + A!B(C+!C)
---------------整理------------------
= !(AB) + A!B + BC
= (!A+A)!B + BC
= !B + BC
= !B + C
完事啦
这样那么长的逻辑都被化简啦!电路和逻辑都能简单不少呢
最近着实有些忙啦!
随缘更新 ing