CPU设计与实现(2)---补码与减法
1、怎么理解减去一个数就是加上这个数的补码
补码核心原理(时钟类比+8位CPU实例
时钟模型:理解补码的本质
想象一个只有12个刻度的时钟(模12系统),核心规则:超出12的部分自动忽略(仅保留余数)。
- 加法(向前走):10点+4格=14,时钟上14-12=2点(自动丢弃12的倍数);
- 减法(向后走):2点-4格(逆时针),等价于2点+8格(顺时针,8=12-4);
- 关键结论:-4和+8在模12系统中等价,8是-4关于模12的“补数”。
CPU的8位二进制系统(模256)
8位寄存器仅能表示0-255(共256个数,2⁸=256),超出部分自动溢出(丢弃256的倍数)。
- 补码定义:-X的补码 = 256 - X;
- 实例:计算5-3(CPU实际运算逻辑)
- 步骤1:求-3的补码:256-3=253(二进制:1111 1101);
- 步骤2:将减法转为加法:5 + 253 = 258;
- 步骤3:忽略溢出:258-256=2(与直接减法结果一致)。
核心优势
CPU仅需一个加法器,即可同时完成加法和减法运算,无需额外设计减法器电路,极大简化硬件设计。
2、8位转换器画法
3、补码加一的实现图
4、综合实现
当是进行减法操作的时候,不可能有进位了(反正我们这里是初始阶段嘛,就是让减法的时候,进位无效就行,后面还会继续深入)
当不是进行减法操作的时候,进位由两个正数相加决定是否有进位
5、笔记
- 🧮 减法的本质:用加法实现!
小伙伴们注意啦!计算机其实根本不会做减法哦~ 它的小秘密就是:减一个数 = 加这个数的负数补码!是不是很神奇?就像咱们用钟表做算术一样巧妙! - 🕰️ 补码的钟表小课堂
想象一个12小时制的钟表(模12系统):1点减1小时=12点(0点),但1点加11小时也等于12点!所以-1的补码就是11~ 同理,减11小时就等于加1小时,是不是瞬间懂了补码的真谛? - 🔢 二进制补码怎么算?
记住这个黄金公式:负数的补码 = 原码按位取反 + 1!比如1减1,把1(二进制0001)按位取反变成1110,再加1就是1111(-1的补码),然后0001 + 1111 = 10000,丢掉进位就是0000(结果0),完美实现减法! - 🔧 动手做个取反器!
咱们需要一个"智能开关"控制取反:想加就直通,想减就取反!真值表拿走不谢:
当控制端EN=0(加法模式):输入0→0,输入1→1(原汁原味输出)
当控制端EN=1(减法模式):输入0→1,输入1→0(乾坤大挪移取反)
揭秘电路:这其实就是个异或门!EN和输入i一异或,想要的结果就出来啦~ - 🛠️ 八位减法器组装攻略
第一步:把8个1位取反器拼成"八位取反器",用分线器把高低位对齐,别连错线哦!
第二步:改造加法器!A直接进加法器,B先过取反器,再把取反器的EN端接到加法器的进位输入(这样就自动+1啦)
测试时间:2-2=0成功!2(0010)减2(0010),B取反变1101,加1后1110,0010+1110=10000,丢掉进位就是0000,完美!

浙公网安备 33010602011771号