【嵌入式学习】补码-加减乘除电路
目录
## 溢出
## 补码
## 乘法和除法的电路实现
## 零检测电路
## 溢出
计算的结果超过了数据的容量
## 补码
八位数可以存储256位数【0000 0000 ~ 1111 1111】
那应该如何表示负数?
用最高位表示符号【0代表正数,1代表负数】
所以得出
【正数:0 000 0000 ~ 0 111 1111】128个正数。符号位为0,包含了数字0
【负数:1 000 0000 ~ 1 111 1111】128个负数。符号位为1,包含了数字0
由于两个符号位都包含数字0,所以得出一个+0,一个-0,这样会浪费一个byte的数据位,如何解决?
利用补码:把一个正数的二进制按位取反再加一就是负数的补码【避免一个+0,一个-0】
补码数据表示范围 -128~+127
十进制负数 | 正数二进制 | 按位取反 | 再加一 |
-1 | 0000 0001 | 1111 1110 | 1111 1111 |
-3 | 0000 0011 | 1111 1100 | 1111 1101 |
利用补码计算5-3,实际上是5+(-3),用5的二进制加负三的补码得出2的二进制,让减法更简单
## 乘法和除法的电路实现
乘法就是多次加法
除法就是多次减法,一直到结果小于0
加减乘除可以通过同一套电路实现
## 零检测电路
如果机器中的数据都是0,则实现部分操作