只讲运算,不讲运算原理
文章目录
方法
1. 取被除数x和除数y的绝对值
,y的(-y)补
2. 第一次因为被除数是绝对值,所以肯定是正数,必须要+(-y)补
3..运算加减时,遵循的规则:
先左移一位,C和A并行,要一起移动
当余数为正时,加(-y)补
,C的末尾添加1
当余数为负时,加|y|
,C的末尾添加0
4. 求x或y的最高次数位,有几位循环几次,商就有几位,最后如果余数位负数,需要增加一步恢复余数,保证余数位正
5. 符号位异或运算,确定最后的符号位
示例:x / y = C
x = -0.0110(真值)
y = 0.1100(真值)
|x| = |0.0110| -> A
|y| = |0.1100| -> B
(-y)补 = 1.0100
0 -> C (默认为0)
****************
A C
00.0110 0.0000
11.0100 +(-y)补 因为值为正数
----------------
11.1010
<- 左移一位 A和C是并在一起的,要一起移动
11.0100 0.000_ 移动完空闲一位
0.0000 根据移动前的和确定,正数末尾填1,负数填0
00.1100 +|y| 因为值为负数
----------------
00.0000
<-
00.0000 0.0001 正数填1
11.0100 +(-y)补
-----------------
11.0100
<-
10.1000 0.0010
00.1100 +|y| 10为负数,01为正数
-----------------
11.0100
<-
10.1000 0.0100
00.1100 +|y|
-----------------
11.0100
0.1000 = 商,但是余数为负,需要+|y|
00.1100
-----------------
00.0000
|x| / |y| = C = 0.1000
(x)符号 ⊕ (y)符号 = 1 ⊕ 0 = 1
C = -0.1000
检验:
x = -0.0110 = 1.0110 = -0.375
y = 0.1100 = 0.75
-0.375 / 0.75 = -0.5
-0.5 = 1.1 = -0.1 <=> -0.1000
小方法
可以看每次的和的双符号位,确认值是否正确,只能出现00
或者11
,因为:
+(-y)补: 可以看成减法,所以一定不可能超出,不可能出现
01.
或者10.
+|y|: 超出情况只有
10.
(负数情况),因为上一个值为正数,需要加(-y)补
,根本可能出现01.
(正数情况);
10
情况: 上次运算只能为负数,且肯定以及进行过+|y|
的操作,此次在+|y|
一定为正数;
假设上一个正数是0,最小只能为(-y)补
,则|y|+|y| >= (-y)补
,(-y)补
一定小于等于二倍的|y|
所以,和的情况只能出现00
和11