cpu计算除法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cpu计算除法

CPU如何来计算除法一

问题:计算机如何来计算除法的?

第一步:分析除法

现在做一个简单的除法56/7,大部分人会很快一闪"七八五十六",很快能算出结果是8.这是九九乘法表作怪,如果我么没有背诵过乘法表,我们如何来计算这个简单的除法呢?其实大致过程如下:

我们首先会比较56中的十位数,既5和除数7来比较,从而来计算我们商的十位上是几?这其实是个选择题,我们备选的答案有0,1,2,3,4,5,6,7,8,9(因为这是十进制的世界)。我们选择了0,因为只有0乘上7以后才会是适合5的答案,因为我们保证了余数是个正数。如是我们就有了商的十分位上为0.接下来我们开始计算个位

上的数,现在变成了余数5×10 + 6 来和7做比较,同样的选择题,我们循环开始选择起,从0一直到9,最终我们选择了8,因为它是使得余数大于等于0的最大一个数。从而个位我们得到值为7.由此得到答案是07,且余数为0.

接下来,来个难度大一点的除法-3456/11,这次我们还是从千位开始(符号问题最后处理),明显千位为0,因为3对11,我们只能选择0,接下来变成了余数3,3×10 + 4 和11比较,我们选择了3,现在我们的商变成了03,余数变成了1.进一步,1×10 + 5 和11比较,我们选择了1,于是商变成了031,而余数为4.再接近一点4 ×10 + 6 比11,我们选择了4,商变成恶劣0314,而余数为2.于是我们的答案变成了0314,余数为2.至于符号,+和负我们很容易得到结果为-,于是结果为-0314, 2.

原码、反码、补码、移码

一、原码、反码、补码的定义

1、原码的定义

①小数原码的定义

[X]原=

X 0≤X <1

1-X -1 <X ≤0

例如:X=+0.1011 , [X]原= 01011

X=-0.1011 [X]原= 11011 ②整数原码的定义

[X]原=

X 0≤X <2n

2n-X -2n <X ≤0

2、补码的定义

①小数补码的定义

[X]补=

X 0≤X <1

2+X -1 ≤X <0

例如:X=+0.1011, [X]补= 01011

X=-0.1011, [X]补= 10101 ②整数补码的定义

[X]补=

X 0≤X <2n

2n+1+X -2n ≤X <0

3、反码的定义

①小数反码的定义

[X]反=

X 0≤X <1

2-2n-1-X -1 <X ≤0

例如:X=+0.1011 [X]反= 01011

X=-0.1011 [X]反= 10100

②整数反码的定义

[X]反=

X 0≤X <2n

2n+1-1-X -2n <X ≤0

4.移码:移码只用于表示浮点数的阶码,所以只用于整数。

①移码的定义:设由1位符号位和n位数值位组成的阶码,则[X]移=2n + X -2n≤X ≤2n

例如:X=+1011 [X]移=11011 符号位“1”表示正号

X=-1011 [X]移=00101 符号位“0”表示负号

②移码与补码的关系:[X]移与[X]补的关系是符号位互为反码,

例如:X=+1011 [X]移=11011 [X]补=01011

X=-1011 [X]移=00101 [X]补=10101

③移码运算应注意的问题:

◎对移码运算的结果需要加以修正,修正量为2n ,即对结果的符号位取反后才是移码形式的正确结果。

◎移码表示中,0有唯一的编码——1000…00,当出现000…00时(表示-2n),属于浮点数下溢。

二、补码加、减运算规则

1、运算规则

[X+Y]补= [X]补+[Y]补

[X-Y]补= [X]补+[-Y]补

若已知[Y]补,求[-Y]补的方法是:将[Y]补的各位(包括符号位)逐位取反再在最低位加1即可。

例如:[Y]补= 101101 [-Y]补= 010011

2、溢出判断,一般用双符号位进行判断:

符号位00 表示正数11 表示负数

结果的符号位为01时,称为上溢;为10时,称为下溢

例题:设x=0.1101,y=-0.0111,符号位为双符号位

用补码求x+y,x-y

[x]补+[y]补=00 1101+11 1001=00 0110

[x-y]补=[x]补+[-y]补=00 1101+00 0111=01 0100

结果错误,正溢出

三、原码一位乘的实现:

设X=0.1101,Y=-0. 1011,求X*Y

解:符号位单独处理,x符+y符

数值部分用原码进行一位乘,如下图所示:

高位部分积低位部分积/乘数说明

0 0 0 0 0 0 1 0 1 1 起始情况

+)0 0 1 1 0 1 乘数最低位为1,+X

--------------------------------------------------------------------------------

0 0 1 1 0 1

0 0 0 1 1 0 1 1 0 1 1(丢) 右移部分积和乘数

+)0 0 1 1 0 1 乘数最低位为1,+X

--------------------------------------------------------------------------------

0 1 0 0 1 1

0 0 1 0 0 1 1 1 1 0 1(丢) 右移部分积和乘数+)0 0 0 0 0 0 乘数最低位为0,+0

--------------------------------------------------------------------------------

0 0 1 0 0 1

0 0 0 1 0 0 1 1 1 1 0(丢) 右移部分积和乘数

+)0 0 1 1 0 1 乘数最低位为1,+X

--------------------------------------------------------------------------------

0 1 0 0 0 1

0 0 1 0 0 0 1 1 1 1 1(丢) 右移部分积和乘数

相关文档
最新文档