SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
明日使えないすごいビット演算
KMC1回生 prime(Twitter id:@_primenumber)
ビット演算とは
●

●

●

コンピューター内で数値や文字列などのデータは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
ビット演算とは
●

ビット論理和 (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
ビット演算とは
●

ビット論理積 (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
ビット演算とは
●

ビット排他的論理和 (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
ビット演算とは
●

左ビットシフト (C言語では x<<n)
–

x

各桁を左に指定した桁数ずらす

0 0 1 0 1 0 1 1

x<<3 0 1 0 1 1 0 0 0
ビット演算とは
●

右ビットシフト (C言語では x>>n)
–

x

各桁を右に指定した桁数ずらす

0 0 1 0 1 0 1 1

x>>3 0 0 0 1 0 1 0 1
上位桁に何を詰めるかによっていくつか種類がある
● 0を詰める
● 元の最上位桁と同じ物を詰める
ビット演算とは
●

ビット演算は回路が単純になるため、とても高速なことが多い
–
–

●

とはいえ最近のCPUだと加減乗算も同じぐらい速い
組み合わせて使うことも多い

うまく使うとものすごい高速化できる
–

●

●

単純な実装に比べて数十倍速くなることも

今回はビット演算を用いていろいろな操作を高速にする例を
挙げます
数値は2の補数表現で格納されているものとします
明日使えないすごいビット演算
●

「1になっている一番下の桁」を取得する
–

2の何乗で割り切れるか,みたいなことが分かったりする

data

0

1

0

1

1

0

0

0
明日使えないすごいビット演算
●

「1になっている一番下の桁」を取得する
–

2の何乗で割り切れるか,みたいなことが分かったりする

data

0

1

0

1

1

0

0

0

0

0

0

0

1

0

0

0
明日使えないすごいビット演算
●

「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になるようにするため)
明日使えないすごいビット演算
●

「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になるため)
明日使えないすごいビット演算
●

「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
明日使えないすごいビット演算
●

「1になっている一番上の桁」を求める
–
–

●

数値のだいたいの大きさを求める
log2 ( n ) の整数部分を求めるのに使える

これは一発では行かないが、うまい方法がある
明日使えないすごいビット演算
●

「1になっている一番上の桁」を求める
–
–

●

数値のだいたいの大きさを求める
log 2 ( n ) の整数部分を求めるのに使える

これは一発では行かないが、うまい方法がある
–

二分探索!
明日使えないすごいビット演算
●

「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
明日使えないすごいビット演算
●

「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になっている一番上の桁」を求める

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桁のどれか!
明日使えないすごいビット演算
●

「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
明日使えないすごいビット演算
●

「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桁のどれか!
明日使えないすごいビット演算
●

「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;
明日使えないすごいビット演算
●

ビット列を逆転する
–

高速フーリエ変換などで用いる

data

0

1

0

1

1

0

0

1

dataの逆転

1

0

0

1

1

0

1

0
明日使えないすごいビット演算
●

ビット列を逆転する
–

これも一気にやるのは無理

data

0

0

1

data&0x55
data&0xAA

1

0

1

1

1
0

0

0

0
1

1
1

0
明日使えないすごいビット演算
●

ビット列を逆転する

data

0 1 0 1 1 0 0 1

(data&0x55)<<1 1
(data&0xAA)>>1

1
0

0
0

1
1

0
明日使えないすごいビット演算
●

ビット列を逆転する

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
明日使えないすごいビット演算
●

ビット列を逆転する

変更前のdata

0 1 0 1 1 0 0 1

変更後のdata

1 0 1 0 0 1 1 0
明日使えないすごいビット演算
●

ビット列を逆転する

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
明日使えないすごいビット演算
●

ビット列を逆転する

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
明日使えないすごいビット演算
●

ビット列を逆転する

0 1 0 1 1 0 0 1
1 0 1 0 0 1 1 0

1 0 1 0 1 0 0 1
明日使えないすごいビット演算
●

ビット列を逆転する

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
明日使えないすごいビット演算
●

ビット列を逆転する

0 1 0 1 1 0 0 1

1 0 0 1 1 0 1 0
明日使えないすごいビット演算
●

ビット列を逆転する

●

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);
明日使えないすごいビット演算
●

1になっているビットの数を数える

●

ビットレベルでハミング距離を取りたい時などに使う

●

素直な実装(int型を32bitと仮定)

int count = 0;
for (int i = 0;i < 32;i++) {
count += (data >> i) & 1;
}
明日使えないすごいビット演算
●

1になっているビットの数を数える

●

ちょっと速い実装

int count = 0;
for(; data; data &= data – 1) {
++count;
}
data &= data-1で1になっている一番小さい桁が0になる
明日使えないすごいビット演算
●

●

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の個数を数えて配列に
入れておく
明日使えないすごいビット演算
●

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の個数が入った配列
明日使えないすごいビット演算
●

1になっているビットの数を数える

●

配列を使った実装はけっこう速い
–

素直な方法の20倍くらい
明日使えないすごいビット演算
●

1になっているビットの数を数える

●

配列を使った実装はけっこう速い
–

●

素直な方法の20倍くらい

しかし、さらに倍くらい速い実装が存在する
明日使えないすごいビット演算

1

0

1

1

0

1

0

0

各桁の0/1を「その桁の1の個数」と読み替えることができる
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
各桁の0/1を「その桁の1の個数」と読み替えることができる
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
0x55

0

1

0

1

0

1

0

1

ビット論理積

0個

1個

1個

0個
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
0xAA

1

0

1

0

1

0

1

ビット論理積

1個

1個

0個

0個

0
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
&0xAA 1個
&0x55

1個
0個

0個
1個

0個
1個

0個
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
1個

1個

0個

0個

0個

1個

1個

0個
明日使えないすごいビット演算

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の数」が格納された!!!
明日使えないすごいビット演算

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個
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
0

1個

1

0個

1
0

0

1個

0

0個

0個

0

0個

1個

0

1個
明日使えないすごいビット演算

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
明日使えないすごいビット演算

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個
明日使えないすごいビット演算

1個 0個 1個 1個 0個 1個 0個 0個
0

0

1

1個

0

0

0

1個

0

0

0

1個

0

0

1

1個
明日使えないすごいビット演算

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
明日使えないすごいビット演算
●

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);
明日使えないすごいビット演算
●

こうして、苦労の末我々は爆速で1になっているビットの数を数
えるアルゴリズムを手に入れた!!!
明日使えないすごいビット演算
●

●

こうして、苦労の末我々は爆速で1になっているビットの数を数
えるアルゴリズムを手に入れた!!!
しかし・・・
明日使えないすごいビット演算
●

●

●

こうして、苦労の末我々は爆速で1になっているビットの数を数
えるアルゴリズムを手に入れた!!!
しかし・・・
IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって
いるビットの数を数える」CPU命令が追加された!(popcnt)
明日使えないすごいビット演算
●

●

●

こうして、苦労の末我々は爆速で1になっているビットの数を数
えるアルゴリズムを手に入れた!!!
しかし・・・
IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって
いるビットの数を数える」CPU命令が追加された!(popcnt)
–

実際ビット演算を使ったアルゴリズムより2倍ほど速い
明日使えないすごいビット演算
●

●

●

こうして、苦労の末我々は爆速で1になっているビットの数を数
えるアルゴリズムを手に入れた!!!
しかし・・・
IntelのSIMD拡張命令セット、SSE4.2から、ズバリ「1になって
いるビットの数を数える」CPU命令が追加された!(popcnt)
–

●

実際ビット演算を使ったアルゴリズムより2倍ほど速い

我々の努力は無駄だった!!!!!
まとめと注意

●
●

ビット演算はうまく使うととても高速
ぱっと見何してるか判りづらいのでバグを埋め込
みやすい
–

ものすごい高速化をする必要のないときは使わ
ないほうが吉
まとめと注意

●
●

ビット演算はうまく使うととても高速
ぱっと見何してるか判りづらいのでバグを埋め込
みやすい
ものすごい高速化をする必要のないときは使わ
ないほうが吉
CPU命令速い!!!!!
–

●

–

本当に高速化したいときはまずこっちを考えるべき
おわり

Weitere ähnliche Inhalte

Was ist angesagt?

プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』Proktmr
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向Motokawa Tetsuya
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてSho Takase
 

Was ist angesagt? (20)

Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
双対性
双対性双対性
双対性
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 

Andere mochten auch

CRC-32
CRC-32CRC-32
CRC-327shi
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)marsee101
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)marsee101
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!Takami Sato
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Takami Sato
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions SurveyTakami Sato
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座Sakiyama Kei
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...Takami Sato
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録Takami Sato
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesTakami Sato
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Takami Sato
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習Preferred Networks
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 

Andere mochten auch (16)

CRC-32
CRC-32CRC-32
CRC-32
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions Survey
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 

Ähnlich wie 明日使えないすごいビット演算

kagamicomput201710
kagamicomput201710kagamicomput201710
kagamicomput201710swkagami
 
kagami_comput2015_2
kagami_comput2015_2kagami_comput2015_2
kagami_comput2015_2swkagami
 
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702swkagami
 
量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみたDaikiUsami
 
kagamicomput201802
kagamicomput201802kagamicomput201802
kagamicomput201802swkagami
 
kagami_comput2016_02
kagami_comput2016_02kagami_comput2016_02
kagami_comput2016_02swkagami
 
kagami_comput2015_6
kagami_comput2015_6kagami_comput2015_6
kagami_comput2015_6swkagami
 
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろうYoichi Toyota
 
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義JPCERT Coordination Center
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編Unity Technologies Japan K.K.
 
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター 【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター Unity Technologies Japan K.K.
 
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングPHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングYo Ya
 
量子コンピューターとは?
量子コンピューターとは?量子コンピューターとは?
量子コンピューターとは?MichihikoSugawara
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介Takehiko YOSHIDA
 
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2H T
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06swkagami
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Inc.
 

Ähnlich wie 明日使えないすごいビット演算 (20)

kagamicomput201710
kagamicomput201710kagamicomput201710
kagamicomput201710
 
kagami_comput2015_2
kagami_comput2015_2kagami_comput2015_2
kagami_comput2015_2
 
計算機理論入門03
計算機理論入門03計算機理論入門03
計算機理論入門03
 
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702
 
量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた量子コンピュータのエミュレータ上でいろんな量子計算してみた
量子コンピュータのエミュレータ上でいろんな量子計算してみた
 
kagamicomput201802
kagamicomput201802kagamicomput201802
kagamicomput201802
 
kagami_comput2016_02
kagami_comput2016_02kagami_comput2016_02
kagami_comput2016_02
 
kagami_comput2015_6
kagami_comput2015_6kagami_comput2015_6
kagami_comput2015_6
 
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろう
 
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
 
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター 【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
 
PHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミングPHP でバイナリ変換プログラミング
PHP でバイナリ変換プログラミング
 
量子コンピューターとは?
量子コンピューターとは?量子コンピューターとは?
量子コンピューターとは?
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
 
レポート1
レポート1レポート1
レポート1
 
コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2コンピュータシステムの理論と実装2
コンピュータシステムの理論と実装2
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
 
kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 

Mehr von 京大 マイコンクラブ

かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話京大 マイコンクラブ
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換京大 マイコンクラブ
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」京大 マイコンクラブ
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編京大 マイコンクラブ
 

Mehr von 京大 マイコンクラブ (20)

テキストファイルを読む💪 第1回
テキストファイルを読む💪  第1回テキストファイルを読む💪  第1回
テキストファイルを読む💪 第1回
 
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
 
Common Lisp入門
Common Lisp入門Common Lisp入門
Common Lisp入門
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
 
セミコロンレスc++
セミコロンレスc++セミコロンレスc++
セミコロンレスc++
 
エンジニアと健康
エンジニアと健康エンジニアと健康
エンジニアと健康
 
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったらもし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
Altseed
AltseedAltseed
Altseed
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 

Kürzlich hochgeladen

2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 

Kürzlich hochgeladen (11)

2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 

明日使えないすごいビット演算