fsyhrb
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1651回复:4

如何符号扩展

楼主#
更多 发布于:2003-06-26 20:31
经ad采样得到的14位补码,进入tms320vc33后如何扩展为32位的补码。(最好是c语言实现),谢了.
linjunchao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2005-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-27 11:11
假设你的初始数据为A,填充为16位(高两位填0);
1。A=A-1;
2。A=A异或0x3FF;
3。B=A强制转换为32位;
4。B=B异或0xFFFF;
5。B=B+1;
B就是你要的结果
lllggg
驱动小牛
驱动小牛
  • 注册日期2002-05-04
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-27 11:34
最简单的C语言实现(经过实际应用):
   unsigned int adc14;//14位ADC植,高位值为0
   int adc32;

   adc32 = (int)adc14;
   adc32 <<= 18;
   adc32 >>= 18;

稍复杂一点的
   unsigned int adc14;//14位ADC植,高位值为0!
   int adc32;

   adc32 = (int)adc14;
   if((adc14 & 0x2000) == 0x2000) adc32 |= 0xffffc000;
 
  这两种都可以。  
(DEEP + BROAD + SIMPLE) & delicate
lllggg
驱动小牛
驱动小牛
  • 注册日期2002-05-04
  • 最后登录2007-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-02 18:30
各位还有没有更妙的思路?贴来让大伙开开眼。
(DEEP + BROAD + SIMPLE) & delicate
fsyhrb
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-03 08:24
我感觉lllggg的第一种方法可能运算量会大一些,我用了第二种。另外好像c40的指令系统中有符号扩展这条指令,3x系列就没有发现了
游客

返回顶部