タグ

algorithmと.netに関するclownboy-zuzuのブックマーク (2)

  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録

    一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、

    一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録
    clownboy-zuzu
    clownboy-zuzu 2009/07/05
    これはすごい!
  • 列挙型(C# によるプログラミング入門)

    概要 C# では、列挙型(enumeration type)と呼ばれるものを利用することで、曜日などの特定の値しかとらないデータを表現することが出来ます。 ポイント 列挙型: 特定の値しか取らないようなもの(例えば曜日など)に対して使う型 enum DayOfWeek { Monday, Tuesday, ... } 列挙型とは 例えば、曜日は月・火・水・木・金・土・日の7つの値しか取りませんし、 英語の月は January, February, March, April, May, June, July, August, September, October, November, December の12個の値しか取りません。 その他にも、 飛行機の乗車クラス(エコノミー・ビジネス・ファースト)、 日の年号(明治・大正・昭和・平成)、 性別(男・女)など、特定の値しか取らないものはたく

    列挙型(C# によるプログラミング入門)
    clownboy-zuzu
    clownboy-zuzu 2009/04/19
    いつか使いこなしたい……
  • 1