计算机组成余数怎么算的

时间:2025-01-19 16:29:22 计算机

计算机组成中的余数计算通常基于特定的算法,如原码恢复余数法。以下是一个基于该算法的详细步骤说明:

初始化

将被除数和除数的符号位进行异或运算,结果作为商的符号位。

初始化商为1,并将该商值存入累加器(ACC)。

第一次除法

将ACC的值(此时为余数)加上除数,得到一个新的值,并将其存回ACC。这一步称为“恢复余数法”。

确定下一商

将商值逻辑左移一位,并在最低位补0。

重复步骤2和3

将新的商值存入ACC,并检测其符号位。

如果符号位为0,则不需要再次计算;如果符号位为1,则重复上述步骤,直到商的位数长度达到字长为止。

计算最终余数

余数等于ACC的值乘以2减去除数。

确定商的符号

商的符号位等于除数和被除数符号位的异或结果。

示例

假设我们要计算108除以25的余数:

初始化

被除数108的符号位为0,除数25的符号位为0,异或结果为0,所以商的第一个数字为0。

初始商为1,存入ACC。

第一次除法

ACC = 108,加上25得到133,存回ACC。

确定下一商

商为0,左移一位得到0,最低位补0,仍为0。

重复步骤2和3

ACC = 133,加上25得到158,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 158,加上25得到183,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 183,加上25得到208,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 208,加上25得到233,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 233,加上25得到258,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 258,加上25得到283,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 283,加上25得到308,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 308,加上25得到333,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 333,加上25得到358,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 358,加上25得到383,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 383,加上25得到408,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 408,加上25得到433,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 433,加上25得到458,存回ACC。

商为0,左移一位得到0,最低位补0,仍为0。

ACC = 458,加上25得到483,存回ACC。

商为0,左移一位得到0,最低位补0,仍为