ビット演算(OR)
ビット単位でフラグを立てるというやり方で集計したデータを、別のデータと集約しようとして、ビット演算を使おうとしたらExcelにもNumberにもそういう関数がないことを最近知ったわたくし。「ビット演算」という考え方は、どうやら一部の人にしか需要のないモノなのですね。
学生の時以来、Excelでできなきゃawkでやる、というのがモットーなのですが、Mac OS Xのawkにはビット演算関数がないらしいので、よせばいいのにOR演算のための関数とか書いてしまいました。
function bit_or ( x, y ) {
l = x > y ? x : y
i = 0
while ( 2 ^ i <= l ) {
b_x[ i ] = int( x * 2 ^ -i ) % 2
b_y[ i ] = int( y * 2 ^ -i ) % 2
i++
}
j=0
while ( j < i ) {
v += ( b_x[ j ] || b_y[ j ] ) * 2 ^ j
j++
}
return v
}
| 固定リンク
コメント