从运算时间来看可以认为 1.0+1.0 >> 1+1
没有FPU怎么办???
将浮点运算转换成定点运算!
主要考虑两方面: 1. 精度要求; 2. 数据范围;
如要求小数点后两位,则 至少放大100倍进行整数计 算
如32位处理器,则必须保 证处理后的数据在 231 之内
ANOTHER TIPS (数据转换)
Just 发送时间 发送的字节数远远少于 格式化发送的字节数
浮点数加减运算:
对阶 加减 规格化 舍入 判溢 出
浮点数乘除运算:
阶码 加减 尾数 乘除 规格化 舍入 判溢 出
整数和浮点数加减对比 (1+1 等同于 1.0+1.0?)
int a=1,b=1,c; ———————————
float aa=1.0,b=1.0,cc; ———————————
从最终结果来看可以认为 1+1 = 1.0+1.0
浮点运算
浮点数在计算机内的格式:
X = MS ES Em-1 ...E2 E1 M-1M-2...M-n
符号位 0正1负
阶码EX
尾数MX
表示的值为:
X = MX * 2
EX
十进制科学计数法 : 要求
a 10
n
1 a 10
X = MX * 2
EX
同样,计算机内要求 的
MX
1/ 2
把不满足这一表示要求的尾数,变成满足 这一要求的尾数的操作过程,叫作浮点数的规 格化处理,通过尾数移位和修改阶码实现。
pi=3.1415926
怎么发送 ? 串口 怎么接收 ?
串口不能直接发送浮点数 怎么办?
常规做法: