[C语言] 帮忙查看项目SPEC的奇怪数据表示法!!!!!

[复制链接]
 楼主| xfh168168 发表于 2013-8-26 15:03 | 显示全部楼层 |阅读模式
做一个旧项目的维护,看到如下文档,看不懂,请大家帮忙,谢谢!!!!

Value: Several fields with the following structure:
1.        Status                                        (8 bits unsigned)
0.        Finished
1.        Busy
2.        Error
3.        Unable to measure (not enough power)
4.        Unstable signal power                       
2.        Start to Finish time * ms                             (16 bits)
Bits 0~11:   *ms,           unsigned
Bits 12~15:   *16^,       signed
Start to Finish time = [Bits 0~11] * 16^[Bits 12~15] ms
3.        Start to current time * ms                     (16 bits)
Bits 0~11:   *ms,           unsigned
Bits 12~15:   *16^,       signed
Start to current time = [Bits 0~11] * 16^[Bits 12~15] ms

==》这里的16^[Bits 12~15]是什么意思?是指数表示法?为什么是16^而不是10^
比如:下命令到现在的时间为1小时,则
计算:1*60*60*1000=3600 000
Bits 0~11:   *ms,     应该为:b1110 0001 0000
Bits 12~15:   *16^,   应该为:b0011
Start to current time = [Bits 0~11] * 16^[Bits 12~15] ms

Start to current time:3E10

看来代码,好像不对。
 楼主| xfh168168 发表于 2013-8-26 15:06 | 显示全部楼层
自己顶一下!
文档解释如下,可是大于[bit0-bit12]就不知道怎么表达了,用指数形式吗?
      At 11:00:21  set gain from 7dB to 6dB, assume gain settle at 1200ms. ”set busy” pin as busy
      At 11:00:22  cmd 0x00 00 response busy 01 0000  3E80   
      At 11:00:22:2  ”set busy” pin as finish
      At 11:00:31  cmd 0x00 00 response finished 00 4B00 2711
 楼主| xfh168168 发表于 2013-8-26 15:43 | 显示全部楼层
有没有人知道啊?
草民 发表于 2013-8-26 16:32 | 显示全部楼层
==》这里的16^[Bits 12~15]是什么意思?是指数表示法?为什么是16^而不是10^

^是C语言中异或运算符,在这里应该是按位异或功能。

楼主明白?
草民 发表于 2013-8-26 16:35 | 显示全部楼层
猜测,错了楼主勿怪
 楼主| xfh168168 发表于 2013-8-26 16:36 | 显示全部楼层
不是吧?我知道C语言中^表示异或,但是这里用来表示时间长度,为什么用异或?
这个文档是老外写的,由于时间过于久远,就不好问老外了,知道的请继续跟我讲......谢谢!
 楼主| xfh168168 发表于 2013-8-27 13:47 | 显示全部楼层
有人说是Bits 12~15:   *16^,       signed 是某次方,而有些人说是异或运算?到底是怎么样啊?
 楼主| xfh168168 发表于 2013-8-27 15:40 | 显示全部楼层
      At 11:00:21  set gain from 7dB to 6dB, assume gain settle at 1200ms. ”set busy” pin as busy
      At 11:00:22  cmd 0x00 00 response busy 01 0000  3E80   
      At 11:00:22:2  ”set busy” pin as finish
      At 11:00:31  cmd 0x00 00 response finished 00 4B00 2711

现在我知道是异或运算,但是如何得到2711 ?
sunhq02 发表于 2013-8-27 21:48 | 显示全部楼层
这不是异或, 是次方
它的意思是说, 16bits的前 12bits表达值
后 4bits作为有符号数解释, 作为指数

例如 2711
0x271 = 625
0x1 = 1
625 * 16^1 = 625 *16 =10000ms, 也就是10s

0x4B00
0x4B0 = 1200
0x0 = 0
1200 * 16^0 = 1200ms
sunhq02 发表于 2013-8-29 08:39 | 显示全部楼层
又是一个不结贴的家伙
 楼主| xfh168168 发表于 2013-8-31 21:28 | 显示全部楼层
呵呵  不好意思!兄弟,最近太忙了,没有上21IC,现在结了,分也当然给你!O(∩_∩)O~
 楼主| xfh168168 发表于 2013-8-31 21:34 | 显示全部楼层
怎么操作失败啊??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部