一边试题,四则运算没有浮点数协处理器
一面试题,四则运算没有浮点数协处理器
f = x * 0.1 + y * 0.3 + z * 0.6
x,y,z 是整数,cpu中没有浮点数的协处理器,何解?
------解决方案--------------------
把小数转化为带负幂权重的二进制数。
------解决方案--------------------
r = 10f = x + 3y + 6z
printf( "%d.%d\n", r/10, r%10 );
------解决方案--------------------
把楼上的思路进一步:
f = (x + 3y + 6z) / 10
3y = y << 1 + y
6z = z << 2 + z << 1
M / 10 = M * 160 / 16
M * 160 = M * 128 + M * 32 = M << 7 + M << 5
N / 16 = N >> 4
f = x * 0.1 + y * 0.3 + z * 0.6
x,y,z 是整数,cpu中没有浮点数的协处理器,何解?
------解决方案--------------------
把小数转化为带负幂权重的二进制数。
------解决方案--------------------
r = 10f = x + 3y + 6z
printf( "%d.%d\n", r/10, r%10 );
------解决方案--------------------
把楼上的思路进一步:
f = (x + 3y + 6z) / 10
3y = y << 1 + y
6z = z << 2 + z << 1
M / 10 = M * 160 / 16
M * 160 = M * 128 + M * 32 = M << 7 + M << 5
N / 16 = N >> 4