Submit Search
Upload
明日使えないすごいビット演算
•
95 likes
•
64,275 views
京大 マイコンクラブ
Follow
KMCの例会講座で用いたスライドを一部編集したものです。 ビット演算を組み合わせたトリッキーな方法で様々な操作を高速に行う方法を紹介します。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 60
Download now
Download to read offline
Recommended
プログラムを高速化するためのテクニックをまとめました。
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
続き (動的木編) はこちら http://www.slideshare.net/iwiwi/2-12188845
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
2019年3月のJOI春合宿で行った講義のスライドです
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
情オリ2012春合宿講義資料
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Union find(素集合データ構造)の解説です
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
競技プログラミングに特有のコーディングテクニックを紹介
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Recommended
プログラムを高速化するためのテクニックをまとめました。
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
続き (動的木編) はこちら http://www.slideshare.net/iwiwi/2-12188845
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
2019年3月のJOI春合宿で行った講義のスライドです
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
情オリ2012春合宿講義資料
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Union find(素集合データ構造)の解説です
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
競技プログラミングに特有のコーディングテクニックを紹介
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
PFIセミナー 2016/04/28
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
x86/x64最適化勉強会8
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
Competitive Programming Advent Calendar 2012の12/01担当分の記事です。
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
BIT
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
2016年7月28日 HCPC勉強会
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
TokyoWebMining #40のトーク3の資料です
最適化超入門
最適化超入門
Takami Sato
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。本チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
2013/1/9に統数研チャンネルにて、ウェーブレット木の解説をしました。岩波書店より出版されました「高速文字列解析の世界」の解説になっています。
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
PyCon JP 2021発表資料(https://2021.pycon.jp/time-table/?id=272565)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ローリングハッシュとサフィックスアレイ
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
九州大学談話会「IMI Colloquium」 https://www.imi.kyushu-u.ac.jp/seminars/view/3001
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
Boost.勉強会 #7 中3女子でもわかる constexpr
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Nov 05, 2018 北海道大学競技プログラミングサークル勉強会
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最適輸送問題(Wasserstein 距離)を解く方法についてのさまざまなアプローチ・アルゴリズムを紹介します。 線形計画を使った定式化の基礎からはじめて、以下の五つのアルゴリズムを紹介します。 1. ネットワークシンプレックス法 2. ハンガリアン法 3. Sinkhorn アルゴリズム 4. ニューラルネットワークによる推定 5. スライス法 このスライドは第三回 0x-seminar https://sites.google.com/view/uda-0x-seminar/home/0x03 で使用したものです。自己完結するよう心がけたのでセミナーに参加していない人にも役立つスライドになっています。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https://speakerdeck.com/joisino/zui-shi-shu-song-nojie-kifang
最適輸送の解き方
最適輸送の解き方
joisino
パーサ勉強会の資料です。
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
最小カットを使って「燃やす埋める問題」を解く方法について、問題とソースコードつきで、まとめました。ニコニコ生放送「TopCoderでプログラムしてみた」2000回記念放送の資料です。
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
CRC-32の説明です。
CRC-32
CRC-32
7shi
関西情報系学生団体交流会2017 Piet勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
More Related Content
What's hot
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
PFIセミナー 2016/04/28
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
x86/x64最適化勉強会8
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
Competitive Programming Advent Calendar 2012の12/01担当分の記事です。
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
BIT
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
2016年7月28日 HCPC勉強会
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
TokyoWebMining #40のトーク3の資料です
最適化超入門
最適化超入門
Takami Sato
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。本チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
2013/1/9に統数研チャンネルにて、ウェーブレット木の解説をしました。岩波書店より出版されました「高速文字列解析の世界」の解説になっています。
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
PyCon JP 2021発表資料(https://2021.pycon.jp/time-table/?id=272565)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ローリングハッシュとサフィックスアレイ
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
九州大学談話会「IMI Colloquium」 https://www.imi.kyushu-u.ac.jp/seminars/view/3001
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
Boost.勉強会 #7 中3女子でもわかる constexpr
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Nov 05, 2018 北海道大学競技プログラミングサークル勉強会
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最適輸送問題(Wasserstein 距離)を解く方法についてのさまざまなアプローチ・アルゴリズムを紹介します。 線形計画を使った定式化の基礎からはじめて、以下の五つのアルゴリズムを紹介します。 1. ネットワークシンプレックス法 2. ハンガリアン法 3. Sinkhorn アルゴリズム 4. ニューラルネットワークによる推定 5. スライス法 このスライドは第三回 0x-seminar https://sites.google.com/view/uda-0x-seminar/home/0x03 で使用したものです。自己完結するよう心がけたのでセミナーに参加していない人にも役立つスライドになっています。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https://speakerdeck.com/joisino/zui-shi-shu-song-nojie-kifang
最適輸送の解き方
最適輸送の解き方
joisino
パーサ勉強会の資料です。
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
最小カットを使って「燃やす埋める問題」を解く方法について、問題とソースコードつきで、まとめました。ニコニコ生放送「TopCoderでプログラムしてみた」2000回記念放送の資料です。
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
What's hot
(20)
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Binary indexed tree
Binary indexed tree
動的計画法を極める!
動的計画法を極める!
最適化超入門
最適化超入門
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
マルチコアを用いた画像処理
マルチコアを用いた画像処理
ウェーブレット木の世界
ウェーブレット木の世界
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Rolling hash
Rolling hash
暗号技術の実装と数学
暗号技術の実装と数学
中3女子でもわかる constexpr
中3女子でもわかる constexpr
最大流 (max flow)
最大流 (max flow)
最適輸送の解き方
最適輸送の解き方
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
Viewers also liked
CRC-32の説明です。
CRC-32
CRC-32
7shi
関西情報系学生団体交流会2017 Piet勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
Vivado HLS勉強会5(AXI4 Stream)です。最後のVivado HLS勉強会資料になります。 Vivado HLS で AXI4 Stream インターフェースを使用する方法です。AXI4 Stream がAXI4 バスを使用するときの王道になると思っています。
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
Vivado HLS勉強会資料の最初です。 掛け算回路をC言語で書いてVivado HLSでIPにします。そのIPをVivadoでZYBO用にインプリメントして、スイッチとLEDを使って動作させます。 Vivado HLSを使う時の初めの1歩として、いかがでしょうか?
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
関東GPGPU勉強会#2 山田てるみ 「GPUが100倍速いという神話をぶち殺せたらいいな ver.2013 + Haswell and MIC fix」
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
Ryo Sakamoto
遺伝的アルゴリズムでAA自動生成 PDF化に伴いGIFは動かないので、ブログの方を参照お願いします。 http://yutori-datascience.hatenablog.com/entry/2015/06/08/170818
AAをつくろう!
AAをつくろう!
Takami Sato
VOYAGE GROUPさん主催の14' Data Scientist MeetUpでLTした時の資料 3時間で作った資料なので超絶適当です。 リファクタしてから上げようかと思いましたが、忙しくて断念 ブログの方には何か書くかもしれません。 http://yutori-datascience.hatenablog.com/
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Takami Sato
社内勉強回用の資料ですが、変な点を指摘してもらうためにコチラで先行公開 I might make a English slide, if there are some requests.
Data Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017Winning Solutions Survey
Takami Sato
PyData.Tokyo #4 トーク1の資料です
High performance python computing for data science
High performance python computing for data science
Takami Sato
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座
Sakiyama Kei
勉強会で枠が余ったら話そうと思ってたけどお蔵入りしたスライド。せっかく作ったので供養も兼ねてアップロード
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
Takami Sato
社内勉強会で発表したKaggleコンペのQuora Question Pairsの参加記録
Quoraコンペ参加記録
Quoraコンペ参加記録
Takami Sato
PFNさん主催のICML2015読み会で話したSparse Subspace Clustering with Missing Entriesの資料
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Takami Sato
勉強会で話した、Scikit-learnの入門資料です。speakerdecでも共有しましたが、slideshare一本化のためこちらにも上げます
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
Takami Sato
IIBMP2016(第五回生命医薬情報学連合大会)での招待講演の内容です。深層学習を生成過程の問題としてとらえて、なぜ表現を学習できるのかを説明した後に,深層生成モデル(VAE, GAN, 少しだけ自己回帰モデル, エネルギーモデル, モーメントマッチングモデルを紹介します。
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
Preferred Networks
生成モデルとかをあまり知らない人にもなるべく分かりやすい説明を心がけたVariational AutoEncoderのスライド 実装と簡単な補足は以下を参照 http://sh-tatsuno.com/blog/index.php/2016/07/30/variationalautoencoder/
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
Viewers also liked
(16)
CRC-32
CRC-32
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
AAをつくろう!
AAをつくろう!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Data Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017Winning Solutions Survey
High performance python computing for data science
High performance python computing for data science
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
Quoraコンペ参加記録
Quoraコンペ参加記録
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Similar to 明日使えないすごいビット演算
kagamicomput201710
kagamicomput201710
kagamicomput201710
swkagami
kagami_comput2015_2
kagami_comput2015_2
swkagami
計算機理論入門03
計算機理論入門03
Tomoyuki Tarumi
kagamicomput201702
kagamicomput201702
kagamicomput201702
swkagami
量子コンピュータ上で加減算など色々な量子計算をしてみたJOIss発表
量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた
DaikiUsami
kagamicomput201802
kagamicomput201802
kagamicomput201802
swkagami
kagami_comput2016_02
kagami_comput2016_02
kagami_comput2016_02
swkagami
kagami_comput2015_6
kagami_comput2015_6
swkagami
論理回路によってどうやって足し算が実現されているかというお話。
足し算をつくろう
足し算をつくろう
Yoichi Toyota
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
JPCERT Coordination Center
2017/11/18に開催されたUnity道場スペシャル 2017京都の講演スライドです。 講師:安原 祐二(ユニティ・テクノロジーズ・ジャパン合同会社) 優れたゲームプログラム、その違いが現れるのは処理速度だけではありません。細かなテクニックを使用することで表現にも差がつきます。今回は乱数にスポットをあてて、その特徴や注意点、そして応用例についてお話しします。乱数はゲームプログラムの基本中の基本です。みなさんが作成中のゲームにも、すぐに使えるテクニックを身につけられます! こんな人におすすめ ・ゲームプログラムの中級者を目指す方 ・乱数やノイズの応用例を知りたい方 受講者が得られる知見 ・乱数の数学的背景 ・乱数の注意点 ・乱数やノイズの応用例 Unityのイベント資料はこちらから: https://www.slideshare.net/UnityTechnologiesJapan/clipboards
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
Unity Technologies Japan K.K.
2017/10/8に開催されたUnity道場スペシャル 2017札幌の講演スライドです。 講師:安原 祐二(ユニティ・テクノロジーズ・ジャパン合同会社) 講演動画:https://youtu.be/VfJAgRZ338k 優れたゲームプログラム、その違いが現れるのは処理速度だけではありません。細かなテクニックを使用することで表現にも差がつきます。今回は乱数にスポットをあてて、その特徴や注意点、そして応用例についてお話しします。乱数はゲームプログラムの基本中の基本です。みなさんが作成中のゲームにも、すぐに使えるテクニックを身につけられます! こんな人におすすめ ・ゲームプログラムの中級者を目指す方 ・乱数やノイズの応用例を知りたい方 得られる知見 ・乱数の数学的背景 ・乱数の注意点 ・乱数やノイズの応用例 Unityのイベント資料はこちらから: https://www.slideshare.net/UnityTechnologiesJapan/clipboards
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
Unity Technologies Japan K.K.
バイナリ処理の前提知識から openpear/IO_Bit の紹介、応用事例まで
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミング
Yo Ya
量子コンピュータについて簡単に説明
量子コンピューターとは?
量子コンピューターとは?
MichihikoSugawara
ETロボコンにおけるMindstorms NXTのBluetooth通信と活用方法の紹介
Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介
Takehiko YOSHIDA
課題提出
レポート1
レポート1
YoshikazuHayashi3
第1回目の勉強会で使う資料です。
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
H T
精度保証付き数値計算入門 概要: 数値計算には丸め誤差の問題があることを前回の講義で解説した。 計算が正しいことが保証されない数値計算は数学の証明に不向きなように思われ るが、 それを可能とする精度保証付き数値計算について概要を紹介する。
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
kagami_comput2016_06
kagami_comput2016_06
kagami_comput2016_06
swkagami
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
Similar to 明日使えないすごいビット演算
(20)
kagamicomput201710
kagamicomput201710
kagami_comput2015_2
kagami_comput2015_2
計算機理論入門03
計算機理論入門03
kagamicomput201702
kagamicomput201702
量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた
kagamicomput201802
kagamicomput201802
kagami_comput2016_02
kagami_comput2016_02
kagami_comput2015_6
kagami_comput2015_6
足し算をつくろう
足し算をつくろう
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミング
量子コンピューターとは?
量子コンピューターとは?
Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介
レポート1
レポート1
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
kagami_comput2016_06
kagami_comput2016_06
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
More from 京大 マイコンクラブ
2021/10/28の例会講座で使用したスライド (以下リンク) のSS移植版です。(オリジナルの発表から内容を一部修正しています。) https://www.canva.com/design/DAEt-1WzsZI/h85bHwMPQ8oxerFP-S3EDQ/view?utm_content=DAEt-1WzsZI&utm_campaign=designshare&utm_medium=link&utm_source=sharebutton
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
京大 マイコンクラブ
2021/09/26のLT大会で使用したスライド (以下リンク) のSS移植版です。 https://www.canva.com/design/DAEqXneuzGc/bVRBpr16c9lhZ6niQ2PEzQ/view?utm_content=DAEqXneuzGc&utm_campaign=designshare&utm_medium=link&utm_source=sharebutton
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
京大 マイコンクラブ
Common Lispの入門スライド。作成者はCoil
Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
多倍長整数の乗算を高速に行うアルゴリズムを、カラツバ法から始めて、最終的に高速フーリエ変換を用いた乗算に至るまでを解説しました。
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
2018/10/18 KMC例会講座 型無しラムダ計算のインタプリタを実装してみる
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
Geometry with Unity
Geometry with Unity
Geometry with Unity
京大 マイコンクラブ
セミコロンを使わずにc++を書きたい
セミコロンレスc++
セミコロンレスc++
京大 マイコンクラブ
エンジニアは肩こりや腰痛など様々な体の不調を抱えがち。 ちょっとした工夫でそれらを根本から解消
エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
音声の分析合成と機械学習を使ってボイスチェンジャーを作るスライドです
女の子になれなかった人のために
女の子になれなかった人のために
京大 マイコンクラブ
KMC春合宿で発表した、難解プログラミング言語で競技プログラミングに挑戦するLTです。
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
もし太陽のコアがCPUと同程度の熱密度を持っていたらどうなるか、雑に計算した結果を発表したLTのスライドです
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
京大 マイコンクラブ
Unity や MonoGame など、C# でゲームを作る環境が整ってきた昨今。メモリ?なにそれ美味しいの?という初学者が、難しいことを考えずにモノづくりができる一方で、メモリについて知らないとトラブルになることもあります。C#でゲームプログラムを書いたことがある、くらいの方を対象に、メモリとは何か、から、メモリリーク・ガベージコレクションの話、そしてガベージコレクションの回数を減らす実装方法について話します。
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
GPUを利用して汎用演算を行う技術であるGPGPUを用いて、プログラムを高速化する技法についてまとめました。高速化の具体例も適宜用いて解説しています。 CPU編はこちら https://www.slideshare.net/KMC_JP/ss-45855264
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
2017-09-02 KMC関東例会 at Cybozu インフラの自動化の辛さと ssh について
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
京大 マイコンクラブ
KMCの新入生プロジェクト「DTM練習会2017」の第1.5回にて行った「伴奏の付け方」に関する講座のスライドです。
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
テストプレイを観察するための心得などを紹介します。 KMC春合宿2017で使用したものに加筆修正を加えたもの。
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
KMC春合宿2017で使ったスライドです 「暗号技術入門 第3版 秘密の国のアリス 著:結城 浩」 をまとめたものです
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
ゲームエンジンをお探しのあなたに
Altseed
Altseed
京大 マイコンクラブ
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
KMC’の新入生プロジェクトの一つ「C#でゲームを作る2016」で使ったスライドです。 まとめ記事:http://kmc.hatenablog.jp/entry/2016/11/20/100421
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
京大 マイコンクラブ
More from 京大 マイコンクラブ
(20)
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
Common Lisp入門
Common Lisp入門
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
Geometry with Unity
Geometry with Unity
セミコロンレスc++
セミコロンレスc++
エンジニアと健康
エンジニアと健康
女の子になれなかった人のために
女の子になれなかった人のために
Pietで競プロしよう
Pietで競プロしよう
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
Altseed
Altseed
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
Recently uploaded
Syed Talal Wasim, Muzammal Naseer, Salman Khan, Ming-Hsuan Yang, Fahad Shahbaz Khan , "Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Grounding" arXiv2024 https://arxiv.org/abs/2401.00901v2
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
2024年5月8日 Power Platform 勉強会 #1 LT資料
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWANスマート距離検出センサー DS20Lカタログ
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
This is an introduction to MAPPO's paper.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Jue Wang, Wentao Zhu, Pichao Wang, Xiang Yu, Linda Liu, Mohamed Omar, Raffay Hamid, " Selective Structured State-Spaces for Long-Form Video Understanding" CVPR2023 https://openaccess.thecvf.com/content/CVPR2023/html/Wang_Selective_Structured_State-Spaces_for_Long-Form_Video_Understanding_CVPR_2023_paper.html
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Key topics covered: - Understanding Ballerina's role in integrations: features and advantages - Designing and implementing REST APIs for integration - Designing and implementing GraphQL services with Ballerina - Monitoring and observing applications - Introduction to data integration
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Recently uploaded
(10)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
明日使えないすごいビット演算
1.
明日使えないすごいビット演算 KMC1回生 prime(Twitter id:@_primenumber)
2.
ビット演算とは ● ● ● コンピューター内で数値や文字列などのデータは2進数で記 録されている ビット演算とは、2進数を0/1の列として操作するような演算 のこと ビット反転 (C言語では ~x) – 各ビットの0/1を反転させる x 0
1 1 0 1 0 1 1 ~x 1 0 0 1 0 1 0 0
3.
ビット演算とは ● ビット論理和 (C言語では x|y) – 各桁を比較して、少なくとも一方が1なら1 x y 0
0 1 0 1 0 1 1 x|y 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1
4.
ビット演算とは ● ビット論理積 (C言語では x&y) – 各桁を比較して、両方とも1なら1 x y 0
0 1 0 1 0 1 1 x&y 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1
5.
ビット演算とは ● ビット排他的論理和 (C言語では x^y) – 各桁を比較して、片方のみが1なら1 x y 0
0 1 0 1 0 1 1 x^y 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1
6.
ビット演算とは ● 左ビットシフト (C言語では x<<n) – x 各桁を左に指定した桁数ずらす 0
0 1 0 1 0 1 1 x<<3 0 1 0 1 1 0 0 0
7.
ビット演算とは ● 右ビットシフト (C言語では x>>n) – x 各桁を右に指定した桁数ずらす 0
0 1 0 1 0 1 1 x>>3 0 0 0 1 0 1 0 1 上位桁に何を詰めるかによっていくつか種類がある ● 0を詰める ● 元の最上位桁と同じ物を詰める
8.
ビット演算とは ● ビット演算は回路が単純になるため、とても高速なことが多い – – ● とはいえ最近のCPUだと加減乗算も同じぐらい速い 組み合わせて使うことも多い うまく使うとものすごい高速化できる – ● ● 単純な実装に比べて数十倍速くなることも 今回はビット演算を用いていろいろな操作を高速にする例を 挙げます 数値は2の補数表現で格納されているものとします
9.
明日使えないすごいビット演算 ● 「1になっている一番下の桁」を取得する – 2の何乗で割り切れるか,みたいなことが分かったりする data 0 1 0 1 1 0 0 0
10.
明日使えないすごいビット演算 ● 「1になっている一番下の桁」を取得する – 2の何乗で割り切れるか,みたいなことが分かったりする data 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0
11.
明日使えないすごいビット演算 ● 「1になっている一番下の桁」を取得する data & (-data) data 0 1 0 1 1 0 0 0 -data 1 0 1 0 1 0 0 0 実は,-dataは~data+1に等しい (足して0になるようにするため)
12.
明日使えないすごいビット演算 ● 「1になっている一番下の桁」を取得する data & (-data) data 0 1 0 1 1 0 0 0 -data 1 0 1 0 1 0 0 0 data
& (-data) 0 0 0 0 1 0 0 0 実は,-dataは~data+1に等しい (足して0になるため)
13.
明日使えないすごいビット演算 ● 「1になっている一番下の桁」を0にする data &= data-1 data 0 1 0 1 1 0 0 0 data-1 0 1 0 1 0 1 1 1 data
& data-1 0 1 0 1 0 0 0 0
14.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める – – ● 数値のだいたいの大きさを求める log2 ( n
) の整数部分を求めるのに使える これは一発では行かないが、うまい方法がある
15.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める – – ● 数値のだいたいの大きさを求める log 2 (
n ) の整数部分を求めるのに使える これは一発では行かないが、うまい方法がある – 二分探索!
16.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める 0 1 0 1 1 0 0 1 0xF0 1 1 1 1 0 0 0 0 ビット論理積 0 1 0 1 0 0 0 0
17.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める 0 1 0 1 1 0 0 1 0xF0 1 1 1 1 0 0 0 0 ビット論理積 0 1 0 1 0 0 0 0 != 0
18.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める 0 1 0 1 1 0 0 1 0xF0 1 1 1 1 0 0 0 0 ビット論理積 0 1 0 1 0 0 0 0 != 0 1になっている一番上の桁は上位4桁のどれか!
19.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0xCC 1 1 0 0 1 1 0 0 ビット論理積 0 1 0 0 0 0 0 0
20.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0xCC 1 1 0 0 1 1 0 0 ビット論理積 0 1 0 0 0 0 0 0 != 0 1になっている一番上の桁は上位2桁のどれか!
21.
明日使えないすごいビット演算 ● 「1になっている一番上の桁」を求める – data data data data data サンプルコード(32ビット) = = = = = data data data data data & & & & & 0xFFFF0000 0xFF00FF00 0xF0F0F0F0 0xCCCCCCCC 0xAAAAAAAA ? ? ? ? ? data data data data data & & & & & 0xFFFF0000 0xFF00FF00 0xF0F0F0F0 0xCCCCCCCC 0xAAAAAAAA : : : : : data; data; data; data; data;
22.
明日使えないすごいビット演算 ● ビット列を逆転する – 高速フーリエ変換などで用いる data 0 1 0 1 1 0 0 1 dataの逆転 1 0 0 1 1 0 1 0
23.
明日使えないすごいビット演算 ● ビット列を逆転する – これも一気にやるのは無理 data 0 0 1 data&0x55 data&0xAA 1 0 1 1 1 0 0 0 0 1 1 1 0
24.
明日使えないすごいビット演算 ● ビット列を逆転する data 0 1 0
1 1 0 0 1 (data&0x55)<<1 1 (data&0xAA)>>1 1 0 0 0 1 1 0
25.
明日使えないすごいビット演算 ● ビット列を逆転する data 0 1 0
1 1 0 0 1 (data&0x55)<<1 1 (data&0xAA)>>1 1 0 0 0 1 1 0 ビット論理和 1 0 1 0 0 1 1 0
26.
明日使えないすごいビット演算 ● ビット列を逆転する 変更前のdata 0 1 0
1 1 0 0 1 変更後のdata 1 0 1 0 0 1 1 0
27.
明日使えないすごいビット演算 ● ビット列を逆転する 0 1 0
1 1 0 0 1 変更後のdata 1 0 1 0 0 1 1 0 data&0x33 data&0xCC 1 0 1 0 1 0 0 1
28.
明日使えないすごいビット演算 ● ビット列を逆転する 0 1 0
1 1 0 0 1 変更後のdata 1 0 1 0 0 1 1 0 (data&0x33)<<2 1 0 (data&0xCC)>>2 1 0 1 0 0 1 1 0 1 0 1 0 0 1
29.
明日使えないすごいビット演算 ● ビット列を逆転する 0 1 0
1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1
30.
明日使えないすごいビット演算 ● ビット列を逆転する 0 1 0
1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0
31.
明日使えないすごいビット演算 ● ビット列を逆転する 0 1 0
1 1 0 0 1 1 0 0 1 1 0 1 0
32.
明日使えないすごいビット演算 ● ビット列を逆転する ● dataは32ビット符号なし型とする data = | data = | data
= | data = | data = ((data & ((data & ((data & ((data & ((data & ((data & ((data & ((data & (data << 0x55555555) 0xAA555555) 0x33333333) 0xCCCCCCCC) 0x0F0F0F0F) 0xF0F0F0F0) 0x00FF00FF) 0xFF00FF00) 16) | (data << >> << >> << >> << >> >> 1) 1); 2) 2); 4) 4); 8) 8); 16);
33.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● ビットレベルでハミング距離を取りたい時などに使う ● 素直な実装(int型を32bitと仮定) int count =
0; for (int i = 0;i < 32;i++) { count += (data >> i) & 1; }
34.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● ちょっと速い実装 int count =
0; for(; data; data &= data – 1) { ++count; } data &= data-1で1になっている一番小さい桁が0になる
35.
明日使えないすごいビット演算 ● ● 1になっているビットの数を数える けっこう速い実装 10進数 2進数 1の個数 0 00000000 0 1 00000001 1 2 00000010
1 3 00000011 2 4 00000100 1 ... ... ... 255 11111111 8 あらかじめ0~255までの数について1の個数を数えて配列に 入れておく
36.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● けっこう速い実装 int count =
0; count += table[data & 0xFF]; count += table[(data >> 8) & 0xFF]; count += table[(data >> 16) & 0xFF]; count += table[(data >> 24) & 0xFF]; table[256] : 1の個数が入った配列
37.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● 配列を使った実装はけっこう速い – 素直な方法の20倍くらい
38.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● 配列を使った実装はけっこう速い – ● 素直な方法の20倍くらい しかし、さらに倍くらい速い実装が存在する
39.
明日使えないすごいビット演算 1 0 1 1 0 1 0 0 各桁の0/1を「その桁の1の個数」と読み替えることができる
40.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 各桁の0/1を「その桁の1の個数」と読み替えることができる
41.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0x55 0 1 0 1 0 1 0 1 ビット論理積 0個 1個 1個 0個
42.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0xAA 1 0 1 0 1 0 1 ビット論理積 1個 1個 0個 0個 0
43.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 &0xAA 1個 &0x55 1個 0個 0個 1個 0個 1個 0個
44.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 1個 1個 0個 0個 0個 1個 1個 0個
45.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 1個 1個 0個 0個 0個 1個 1個 0個 足し算 0 1個 1 0個 0 1個 0 0個 2桁ごとに「その2桁にあった1の数」が格納された!!!
46.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 1個 &0xCC 0 1個 0個 1 &0x33 1 0 0個 1個 0 0個 0 0 1個 0個
47.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 1個 1 0個 1 0 0 1個 0 0個 0個 0 0個 1個 0 1個
48.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 1個 1 0個 1 0 0 1個 0 0個 0個 0 0個 1個 0 1個 0 1個 足し算 0 0 1 1個 0 0
49.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 0 1 1個 &0xF0 0 0 1 1個 0 0 1個 0 &0x0F 0 0 0 1個
50.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 0 1 1個 0 0 0 1個 0 0 0 1個 0 0 1 1個
51.
明日使えないすごいビット演算 1個 0個 1個
1個 0個 1個 0個 0個 0 0 1 1個 0 0 0 1個 0 0 0 1個 0 0 1 1個 0 0個 足し算 0 0 0 0 0 1
52.
明日使えないすごいビット演算 ● 1になっているビットの数を数える ● かなり速い実装(dataはunsigned int型) data = + data
= + data = + data = + data = + (data & 0x55555555) ((data & 0xAAAAAAAA) (data & 0x33333333) ((data & 0xCCCCCCCC) (data & 0x0F0F0F0F) ((data & 0xF0F0F0F0) (data & 0x00FF00FF) ((data & 0xFF00FF00) (data & 0x0000FFFF) ((data & 0xFFFF0000) >> 1); >> 2); >> 4); >> 8); >> 16);
53.
明日使えないすごいビット演算 ● こうして、苦労の末我々は爆速で1になっているビットの数を数 えるアルゴリズムを手に入れた!!!
54.
明日使えないすごいビット演算 ● ● こうして、苦労の末我々は爆速で1になっているビットの数を数 えるアルゴリズムを手に入れた!!! しかし・・・
55.
明日使えないすごいビット演算 ● ● ● こうして、苦労の末我々は爆速で1になっているビットの数を数 えるアルゴリズムを手に入れた!!! しかし・・・ IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって いるビットの数を数える」CPU命令が追加された!(popcnt)
56.
明日使えないすごいビット演算 ● ● ● こうして、苦労の末我々は爆速で1になっているビットの数を数 えるアルゴリズムを手に入れた!!! しかし・・・ IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって いるビットの数を数える」CPU命令が追加された!(popcnt) – 実際ビット演算を使ったアルゴリズムより2倍ほど速い
57.
明日使えないすごいビット演算 ● ● ● こうして、苦労の末我々は爆速で1になっているビットの数を数 えるアルゴリズムを手に入れた!!! しかし・・・ IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって いるビットの数を数える」CPU命令が追加された!(popcnt) – ● 実際ビット演算を使ったアルゴリズムより2倍ほど速い 我々の努力は無駄だった!!!!!
58.
まとめと注意 ● ● ビット演算はうまく使うととても高速 ぱっと見何してるか判りづらいのでバグを埋め込 みやすい – ものすごい高速化をする必要のないときは使わ ないほうが吉
59.
まとめと注意 ● ● ビット演算はうまく使うととても高速 ぱっと見何してるか判りづらいのでバグを埋め込 みやすい ものすごい高速化をする必要のないときは使わ ないほうが吉 CPU命令速い!!!!! – ● – 本当に高速化したいときはまずこっちを考えるべき
60.
おわり
Download now