一面试题,四则运算没有浮点数协处理器
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