读书人

一边试题四则运算没有浮点数协处理器

发布时间: 2012-08-13 13:21:53 作者: rapoo

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

读书人网 >软件架构设计

热点推荐