代表数字:整数和定点
在嵌入式系统中,计算时间和内存资源至关重要。浮点计算需要特殊处理器浮点单位有效的计算,这意味着更昂贵。出于这个原因,嵌入式系统的设计者经常使用定点数字。在这篇文章中,我想介绍的基本概念定点数表示。我也想与你分享一篇文章从MATLAB消化将从浮点模型转换为定点生产代码生成。
整数
整数是最基本的方式存储在二进制数字。为整数,每个点代表一个不同的数字在两个大国。想象,我想看看一个玩具三位数字系统。位的值在这个玩具系统22(4)21(2),20(1),这三位系统可以代表所有整数值介于0到7使用以下模式:
22 |
21 |
20 |
价值 |
0 |
0 |
0 |
= 0 |
0 |
0 |
1 |
= 1 |
0 |
1 |
0 |
= 2 |
0 |
1 |
1 |
= 3 |
1 |
0 |
0 |
= 4 |
1 |
0 |
1 |
= 5 |
1 |
1 |
0 |
= 6 |
1 |
1 |
1 |
= 7 |
外加一个符号位跟踪积极或消极的数字,我们的三位无符号整数成为四位有符号整数。开始时只是将一个符号位的数量产生了一个有趣的问题+ 0,0表示。有不同的方法来处理有符号数表示。使用二进制补码方法,每一个负数的位不是正数。因此,如果一个是在0001年,- 1是1110。用二进制补码数,负0是最负数,1000 = 8。签署了四位模式是这样的:
标志 |
22 |
21 |
20 |
价值 |
0 |
1 |
1 |
1 |
= 7 |
0 |
1 |
1 |
0 |
= 6 |
0 |
1 |
0 |
1 |
= 5 |
0 |
1 |
0 |
0 |
= 4 |
0 |
0 |
1 |
1 |
= 3 |
0 |
0 |
1 |
0 |
= 2 |
0 |
0 |
0 |
1 |
= 1 |
0 |
0 |
0 |
0 |
= 0 |
1 |
1 |
1 |
1 |
= 1 |
1 |
1 |
1 |
0 |
= 2 |
1 |
1 |
0 |
1 |
= 3 |
1 |
1 |
0 |
0 |
= 4 |
1 |
0 |
1 |
1 |
= 5 |
1 |
0 |
1 |
0 |
= 6 |
1 |
0 |
0 |
1 |
= 7 |
1 |
0 |
0 |
0 |
= 8 |
这扩展了范围从8 + 7,和数字等间距的范围。整数表示定点数字只是一个特例。
定点数字:二进制
定点数字使用相同的整数表示,但比特分配一个不同的意义。我们可以介绍部分比特和二进制的想法。整数,你的最小间距的数字是1。如果我们决定让一位代表½我们现在有近间距在我们的系统。右边的二进制的二进制数是分数的长度。使用我们的玩具三位系统,我们可以分配一个固定的二进制小数点后第一位。这是那么一小部分长度的两个三位系统。位的值是1,½,¼。0.10 =½。这三位定点系统可以代表以下范围的数字:
20 |
21 |
22 |
价值 |
0 |
0 |
0 |
= 0 |
0 |
0 |
1 |
=¼ |
0 |
1 |
0 |
=½ |
0 |
1 |
1 |
=¾ |
1 |
0 |
0 |
= 1 |
1 |
0 |
1 |
= 1¼ |
1 |
1 |
0 |
= 1½ |
1 |
1 |
1 |
= 1¾ |
这允许更精确更小范围的数字。二点的位置决定了范围的数量和它们之间的间距。
如果我们想把二进制小数点后5th在我们的三位系统?在这种情况下,部分长度是2。而不是分位,最低有效位等于4。在这样的一个系统,将16位,8和4。
24 |
23 |
22 |
价值 |
0 |
0 |
0 |
= 0 |
0 |
0 |
1 |
= 4 |
0 |
1 |
0 |
= 8 |
0 |
1 |
1 |
= 12 |
1 |
0 |
0 |
= 16 |
1 |
0 |
1 |
= 20 |
1 |
1 |
0 |
= 24 |
1 |
1 |
1 |
= 28 |
这种表示方法为我们提供了一个更大的范围,但更大的间距。想象一个引擎控制器有代表值介于0和10000 rpm。无符号的八位整数的最大值是255。一个16位无符号整数可以保存在0到65535之间的值。如果我们选择一个八位数字与分数6的长度,我们可以存储这些数据只使用8位。这样一个系统的范围是0到16320间距为64。
定点数:斜坡和偏见
定点数的系统还可以使用任意编码实际值斜率和偏见。常规的整数斜率为1和0的偏见。当使用斜率和偏见,储存一个整数的二进制表示是用来计算实际值。是曾经熟悉的线方程,计算y = m∙x + b。这表示变化的范围和比例数字代表。使用我们的玩具三位整数,我们可以定义一个斜率为1.25和20的偏见。4位仍然是2和1,但计算值是1.25∙x + 20。
22 |
21 |
20 |
整数 |
现实世界的价值 |
0 |
0 |
0 |
= 0 |
1.25∙0 + 20 = 20 |
0 |
0 |
1 |
= 1 |
1.25∙1 + 20 = 21.25 |
0 |
1 |
0 |
= 2 |
1.25∙2 + 20 = 22.50 |
0 |
1 |
1 |
= 3 |
1.25∙3 + 20 = 23.75 |
1 |
0 |
0 |
= 4 |
1.25∙4 + 20 = 25.00 |
1 |
0 |
1 |
= 5 |
1.25∙5 + 20 = 26.25 |
1 |
1 |
0 |
= 6 |
1.25∙6 + 20 = 27.50 |
1 |
1 |
1 |
= 7 |
1.25∙7 + 20 = 27.75 |
定点表示法有更多错综复杂,金宝app仿真软件定点文档给出了一个伟大的概述。
在定点工作的挑战
使用定点添加的挑战嵌入式系统开发的复杂性。你必须确保你有正确的扩展和偏见为您的应用程序以避免溢出或下溢的。如果你有金宝app仿真软件定点您可以使用定点仿真软件模型中数据类型和得到你的真实模拟设计。金宝appMATLAB消化文章将从浮点模型转换为定点生产代码生成解释了工作流,帮助你得到正确的仿真软件的设计。金宝app
现在轮到你了
你开发定点代码吗?你从这篇概述定点数表示?留下一个这里的评论并分享你的定点的故事。
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。