在单片机中的浮点数编程
来源:互联网 发布:交换机做dhcp域名转换 编辑:程序博客网 时间:2024/04/28 11:02
问题背景:
在使用8BIT单片机进行开发,不支持浮点数运算。但是开发必须用到sin,cos,arctan等浮点数函数。
苦想了两天,才发现,自己要当一回“计算机”。
单片机不支持浮点数,可是编程却一定要用到小数。这时,只好自定义“定点小数”了。
所需的浮点数范围有两个区域-1~1,-60~60。精度就按小数点后2、3位了。
如果在高级语言中,我想定义的数组是
double arctantable[95]=
{
0.0174551, 0.0349208, 0.0524078, 0.0699268, 0.0874887, 0.105104, 0.122785, 0.140541, 0.158384, 0.176327,
0.19438, 0.212557, 0.230868, 0.249328, 0.267949, 0.286745, 0.305731, 0.32492, 0.344328, 0.36397,
0.383864, 0.404026, 0.424475, 0.445229, 0.466308, 0.487733, 0.509525, 0.531709, 0.554309, 0.57735,
0.600861, 0.624869, 0.649408, 0.674509, 0.700208, 0.726543, 0.753554, 0.781286, 0.809784, 0.8391,
0.869287, 0.900404, 0.932515, 0.965689, 1, 1.03553, 1.07237, 1.11061, 1.15037, 1.19175,
1.2349, 1.27994, 1.32704, 1.37638, 1.42815, 1.48256, 1.53986, 1.60033, 1.66428, 1.73205,
1.80405, 1.88073, 1.96261, 2.0503, 2.14451, 2.24604, 2.35585, 2.47509, 2.60509, 2.74748,
2.90421, 3.07768, 3.27085, 3.48741, 3.73205, 4.01078, 4.33148, 4.70463, 5.14455, 5.67128,
6.31375, 7.11537, 8.14434, 9.51436, 11.43, 14.3007, 19.0811, 28.6362, 57.2899,
-57.2897,-0.0174551,0.0174551,57.2897,-57.2897, -0.0174551
};
在单片机中,我可不能这样定义。会报错的。
观察数据后,我们发现整数部分要6bit,符号位要1bit,小数部分(0.99)110 0011(7bit),故一个浮点数,用2byte来表示,高8bit是符号位和整数部分,低8bit是小数部分。
0.0174551(0.02)在单片机中,可以表示为0x0002;
0.0349208,可表示为0x0003;
-57.2897,可表示为0xb91d;等等……
- 在单片机中的浮点数编程
- 在8位单片机中的浮点数运算---开方,乘法,除法,反正切
- 单片机中的浮点数转换成串口可打印格式
- 浮点数在计算机中的表示
- IEEE754浮点数在机器中的格式
- 关于浮点数在计算机中的储存
- 浮点数在计算机中的表示
- 浮点数在计算机中的存储
- 浮点数在计算机中的存储方式
- 浮点数在计算机中的表示
- 浮点数在计算机中的表示
- 浮点数在计算机中的表示
- 浮点数在计算机中的表示
- 浮点数在计算中的存储
- 浮点数在计算机中的编码
- 浮点数在计算机中的表示
- 浮点数在计算机内存中的表示
- 浮点数在计算机中的存储
- Fedora下安装bugzilla 4.0.1的感想
- 遍历二叉树的各种实现
- GBK编码表
- SQL server 2005表的分区
- 念叨叨Mina
- 在单片机中的浮点数编程
- GB2312编码表
- WinCE BSP工程文件分析
- 新浪微博技术架构分析-转载
- 拷贝构造函数的作用
- QT 从子窗口返回主界面时处理
- 关于RVDS的PRESERVE8
- XP下安装ubuntu双系统
- 一种编写C++构造函数中初始化列表的格式