(toppers-users 3734) Re: SSPの制約タスクの待ちについて

koizumi yoshiyuki koizumiyoshiyuki @ gmail.com
2012年 1月 17日 (火) 14:36:15 JST


宮川さん

面白いですね。 言われて気が付いた、nはインクリメントよりデクリメントのほうがシンプルだといわれていますね。

以上

2012年1月17日11:10 Miyagawa <miyagawa @ sanritz.co.jp>:

> 宮川です。
>
> 余計な突っ込みかも知れませんが、、、
>
> > Inline uint_t
> > bitmap_search(uint_t bitmap)
> > {
> >  uint_t n;
> >  for(n = 0U; n < 3; n++){
> >   if ((bitmap & 0x0fU) == 0U) {
> >    bitmap >>= 4U;
> >   }else{
> >    break;
> >   }
> >  }
> >  return (n*4U + bitmap_search_table[(bitmap & 0x0fU) - 1U]);
> > }
>
> n <= 3 ? は置いといて、
>
> 良く知られた方法としては、こんな手もあります。(16bit)
>
>  x = (x & (-x)) - 1
>  x = (x & 0x5555) + ( (x >> 1) & 0x5555)
>  x = (x & 0x3333) + ( (x >> 2) & 0x3333)
>  x = (x & 0xffff) + ( (x >> 4) & 0xffff)
>  x = (x & 0x00ff) + ( (x >> 8) & 0x00ff)
>
> 固定時間だし、シフトと足し算だけなのでそれなりに速いと思います。
>
> --------------
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20120117/0b8843d8/attachment.html>