打印

如何检测24位数中连续0的最大个数

[复制链接]
1369|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
robbins37|  楼主 | 2012-10-10 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xiao6666| | 2012-10-10 18:15 | 只看该作者
:L为什么还有语言的要求。
提供思路不行么??

使用特权

评论回复
板凳
dwananqinyan| | 2012-10-10 19:30 | 只看该作者
用状态机实现倒是很简单,组合逻辑比较麻烦

使用特权

评论回复
地板
dousfoulexd| | 2012-10-10 20:07 | 只看该作者
如果是并行的,先串化,变成串行数据,然后检测下降沿开始计数,上升沿的时候吧计数读出来计数器清零,然后把计数比较就可以了,如果是altra公司的会有现成的比较数值的模块的。不知道这么说你明白不?

使用特权

评论回复
5
GoldSunMonkey| | 2012-10-10 21:03 | 只看该作者
用状态机实现倒是很简单,组合逻辑比较麻烦
dwananqinyan 发表于 2012-10-10 19:30

设一个变量C=0
然后并行转串行,进行分析。如果是遇到0计数器+1, 如果遇到不是0的就把计数器的值和变量c比较,
如果计数器的值大于c,就让c=计数器的值,同时清0计数器。

然后到最后,c就是得到0的最大个数。

使用特权

评论回复
6
GoldSunMonkey| | 2012-10-11 18:11 | 只看该作者
组合逻辑不太可能实现, 24位真值表16777216种可能性.  用状态机, 移位24次来实现.
qinxg 发表于 2012-10-11 10:31
组合逻辑还真不好实现。你提醒了我。哈哈

使用特权

评论回复
7
drentsi| | 2012-10-12 10:45 | 只看该作者
组合逻辑也可以实现的,这个问题有点像我以前解决的一个问题,那是检测16个bit中的连续1.
分以下几步:
1.把这个数与其自身的右移一位的数异或,以便探测边缘,24bit最多也只有12个边缘。
2.把12个边缘的位置进行编码,最多5bit即可。
3.把位置进行相减,即得到连续0的个数。
4.剩下的就是比较了,得出最大的。

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
GoldSunMonkey + 10 想法不错,兄弟。
8
GoldSunMonkey| | 2012-10-12 12:51 | 只看该作者
组合逻辑也可以实现的,这个问题有点像我以前解决的一个问题,那是检测16个bit中的连续1.
分以下几步:
1.把这个数与其自身的右移一位的数异或,以便探测边缘,24bit最多也只有12个边缘。
2.把12个边缘的位置进行编 ...
drentsi 发表于 2012-10-12 10:45
谢谢分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

160

帖子

2

粉丝