2`s complement in 3.13 format(取值范围是-4~3.99)是什么意思?
2`s complement in 3.13 format(The range is from -4~3.99) what does it mean?
我正在使用 Relatek 音频编解码器 ALC5621 进行一些自定义音频处理 application.I 使用 i2c bit banging 来控制编解码器和 soc(cc1110) 之间的通信。在弄清楚均衡器部分时我遇到了一个问题,
表示如下---> 一个接受二进制输入的 16 位寄存器,其格式为 ---> "2`s complement in 3.13 format(The range is from -4~3.99) " Register size 16 bit (15,0 ) ,如何将数据输入该寄存器,例如:-4、-1 等?
3.13 格式以二进制定点算术符号表示,称为 "Q" 数字格式。
参考:Fixed-point arithmetic
3.13 描述了一个具有 3 个整数位和 13 个小数位的数字,存储为 16 位 2 的补码整数(引用维基百科)。
将 Q3.13 中给出的定点值转换为 "physical" 浮点值的方法是将整数值除以 2^13。
16位整数可以表示为short C变量:short q;
"physical"(即电压)值可以表示为double C变量:double v;
short q; //Q3.13 integer format.
double v; //"physical" value (assuming voltage).
将 q 转换为 v:
v = (double)q/(double)(1<<13);
将 v 转换为 q:
q = (short)floor(v*(double)(1<<13) + 0.5); //Add 0.5 for rounding - round(x) = floor(x+0.5)
示例:
q = -32768; //Minimum short range
//v = -32768 / 8192 = -4.0
q = 32767; //Maximum short range
//v = 32767 / 8192 = 3.9998779
v = -4.0;
//q = floor(-4.0*8192.0 + 0.5) = -32768
v = -1.0;
//q = floor(-1.0*8192.0 + 0.5) = -8192
我正在使用 Relatek 音频编解码器 ALC5621 进行一些自定义音频处理 application.I 使用 i2c bit banging 来控制编解码器和 soc(cc1110) 之间的通信。在弄清楚均衡器部分时我遇到了一个问题, 表示如下---> 一个接受二进制输入的 16 位寄存器,其格式为 ---> "2`s complement in 3.13 format(The range is from -4~3.99) " Register size 16 bit (15,0 ) ,如何将数据输入该寄存器,例如:-4、-1 等?
3.13 格式以二进制定点算术符号表示,称为 "Q" 数字格式。
参考:Fixed-point arithmetic
3.13 描述了一个具有 3 个整数位和 13 个小数位的数字,存储为 16 位 2 的补码整数(引用维基百科)。
将 Q3.13 中给出的定点值转换为 "physical" 浮点值的方法是将整数值除以 2^13。
16位整数可以表示为short C变量:short q;
"physical"(即电压)值可以表示为double C变量:double v;
short q; //Q3.13 integer format.
double v; //"physical" value (assuming voltage).
将 q 转换为 v:
v = (double)q/(double)(1<<13);
将 v 转换为 q:
q = (short)floor(v*(double)(1<<13) + 0.5); //Add 0.5 for rounding - round(x) = floor(x+0.5)
示例:
q = -32768; //Minimum short range
//v = -32768 / 8192 = -4.0
q = 32767; //Maximum short range
//v = 32767 / 8192 = 3.9998779
v = -4.0;
//q = floor(-4.0*8192.0 + 0.5) = -32768
v = -1.0;
//q = floor(-1.0*8192.0 + 0.5) = -8192