タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

cとalgorithmに関するmasa0x80のブックマーク (2)

  • ビット演算関連 - 簡潔なQ

    フラグとして使ったりするときに必須なやつ。 &で論理積 |で論理和 ^で排他的論理和 ~でビット反転 a|=bでフラグを立てる。 a&=~bでフラグを折る。 a^=bでフラグを反転。 シフト <<で左シフト。0で埋められる。 >>で右シフト。算術シフトか論理シフトかは決まってないらしい。 算術シフト:最上位ビットはシフト前のが継承されるので、負数も2でわった感じになる。 論理シフト:最上位ビットは0になる。 ちなみに手元のLinux(GCC4.3.4,x86)で試したら、signedは算術、unsignedは論理だった。まあさすがにunsignedが論理シフトは仮定していいと思うんだけどどうなんだろう。 ちなみに有名な話だが、シフトの性質上、算術右シフトは端数を負の無限大方向に切り捨てる。除算だと0方向に切り捨てる場合が結構あって、実際C99ではそういう仕様っぽいので、そこを区別する

    ビット演算関連 - 簡潔なQ
  • C - でも一番右端の立っているビット位置を求めてみた : 404 Blog Not Found

    2009年07月07日03:30 カテゴリMathLightweight Languages C - でも一番右端の立っているビット位置を求めてみた 素晴らしい。 2009-07-04 - 当面C#と.NETな記録 問題の説明はここまでにして、コードの紹介です。Hacker's delight のコードより4〜5倍速く、そして、イミフ加減が半端じゃない!これ一つで 64bit 値以下のすべての値に対応できます。 でも、実際にどれくらい威力があるか試してみたかったのでCに移植してみた。意外な結果が出ております。 0x03F566ED27179461ULL まずは黒魔術。より黒魔術っぽくしてみました。 typedef unsigned long long U64; #define HASH 0x03F566ED27179461ULL static int ntzhash[64]; void i

    C - でも一番右端の立っているビット位置を求めてみた : 404 Blog Not Found
  • 1