计算机内原码乘法、除法的实现

前言

此文章主要是介绍具体的例子计算方法,希望对你有帮助

一、原码乘法

X=0.1101,Y=0.1011,求XY
[X]原=01101
[Y]原=01011
[X]原
[Y]原=10001111

被乘数为[X]原,开始的高位部分积都为0,低位部分积为乘数的原码。
两个乘数最大的小数位为4,需要在运算中加四次(或右移四次),最后一次加完的值还需要再右移一次才是结果。

在这里插入图片描述

二、原码除法

[1]. 恢复余数法

X= -0.1011,Y= -0.1101,求[X/Y]原
[X]原=1.1011
[Y]原=1.1101
X*=0.1011
[Y*]补=Y*=0.1101
-Y*=1.1101,[-Y*]反=1.0010 ,[-Y*]补=[-Y*]反+1=1.0011

Y即对Y求绝对值,因为Y的值为正数,所以Y*=[Y*]反=[Y*]补
在求[-Y*]补时,直接对[Y*]补每一位取反末位加1即可。
在求[-Y*]反时,直接将小数部分取反即可。
被除数为X*,除数为Y*
当商的当前位数和商的初始位数相同时,可结束运算。

在这里插入图片描述

[2]. 不恢复余数法(加减交替法)

X= -0.1011,Y= -0.1101,求[X/Y]原
[X*]补=X*=0.1011
[Y*]补=Y*=0.1101
-Y*=1.1101,[-Y*]反=1.0010,[-Y*]补=[-Y*]反+1=1.0011

Y即对Y求绝对值,因为Y的值为正数,所以Y*=[Y*]反=[Y*]补
在求[-Y*]补时,直接对[Y*]补每一位取反末位加1即可。
在求[-Y*]反时,直接将小数部分取反即可。
被除数为X*,除数为Y*
当商的当前位数和商的初始位数相同时,可结束运算。

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章