关于40位数据的移位问题

[复制链接]
1914|14
 楼主| paraselene1 发表于 2013-10-10 14:28 | 显示全部楼层 |阅读模式
我通过include "stdint.h" 定义了uint40_t类型的40位数据类型。但是这个数据在移位的时候就发生了错误,数据无法向左移动到最高的8位上面,设置第32都无法移动到,有高手知道原因么?或者有什么解决方案么?
airwill 发表于 2013-10-10 15:37 | 显示全部楼层
真是个令人郁闷的事情,看来编译器对这类非标准的数据类型处理并不完全支持
zhangmangui 发表于 2013-10-10 23:13 | 显示全部楼层
这个也不好说  与编译器有关系
zhangmangui 发表于 2013-10-10 23:16 | 显示全部楼层
我在stdint.h   没有找到uint40_t类型
firstblood 发表于 2013-10-11 20:39 | 显示全部楼层
还是定义的数据类型的除了啥问题的吧:P
 楼主| paraselene1 发表于 2013-10-12 11:11 | 显示全部楼层
airwill 发表于 2013-10-10 15:37
真是个令人郁闷的事情,看来编译器对这类非标准的数据类型处理并不完全支持 ...

对啊,我发现只要大于32位的就不能向左移位了
 楼主| paraselene1 发表于 2013-10-12 11:14 | 显示全部楼层
zhangmangui 发表于 2013-10-10 23:16
我在stdint.h   没有找到uint40_t类型

有啊,我用的CCSv5的版本,我找到解决办法了,如果要移位的话用<<移位符的话移到32位以上就不行了,但是我如果直接用乘2的方法的话就可以了,所以我移几位直接乘几个2就可以了。。。纠结了好久,依然谢谢热心的版主么哈
 楼主| paraselene1 发表于 2013-10-12 11:16 | 显示全部楼层
firstblood 发表于 2013-10-11 20:39
还是定义的数据类型的除了啥问题的吧

DSP内部是32位的,如果用超了位数的数据类型的话,果然有可能会出现这样那样的问题
 楼主| paraselene1 发表于 2013-10-12 11:16 | 显示全部楼层
zhangmangui 发表于 2013-10-10 23:16
我在stdint.h   没有找到uint40_t类型

版主,问下怎么结贴啊。。。我好几个帖子都没有结贴。。。
airwill 发表于 2013-10-12 11:51 | 显示全部楼层
关于如何结贴的最详细教程
https://bbs.21ic.com/icview-442857-1-1.html
zhangmangui 发表于 2013-10-12 13:05 | 显示全部楼层
paraselene1 发表于 2013-10-12 11:16
版主,问下怎么结贴啊。。。我好几个帖子都没有结贴。。。

airwill给的链接讲解很详细  你看看  
如果还是不行   @zhangmangui
zhangmangui 发表于 2013-10-12 13:06 | 显示全部楼层
paraselene1 发表于 2013-10-12 11:14
有啊,我用的CCSv5的版本,我找到解决办法了,如果要移位的话用

我下来在仔细看看  谢谢
 楼主| paraselene1 发表于 2013-10-12 13:38 | 显示全部楼层
airwill 发表于 2013-10-12 11:51
关于如何结贴的最详细教程
https://bbs.21ic.com/icview-442857-1-1.html

看到啦
biechedan 发表于 2013-10-13 00:12 | 显示全部楼层
还是使用两位吧。
biechedan 发表于 2013-10-13 00:12 | 显示全部楼层
可以定义一个宏实现这些功能的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

35

帖子

0

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