2022-02-16 Rubyでビット演算
Ruby でビット演算をしてみる。
ビットAND
a = 10
b = 11
puts "#{a} & #{b} => #{a&b}"
puts a.to_s(2)
puts b.to_s(2)
puts "----"
puts (a&b).to_s(2)
出力結果
10 & 11 => 10
1010
1011
----
1010
ビットOR
a = 10
b = 11
puts "#{a} | #{b} => #{a|b}"
puts a.to_s(2)
puts b.to_s(2)
puts "----"
puts (a|b).to_s(2)
出力結果
10 | 11 => 11
1010
1011
----
1011
ビットXOR
a = 10
b = 11
puts "#{a} ^ #{b} => #{a^b}"
puts a.to_s(2)
puts b.to_s(2)
puts "----"
printf("%04b\n", (a^b))
出力結果
10 ^ 11 => 1
1010
1011
----
0001
ビット反転
a = 10
puts "~#{a} => #{~a}"
printf("%08b\n", a)
puts "--------"
printf("%08b\n", ~a)
出力結果
~10 => -11
00001010
--------
..110101
左シフト
a = 11
b = 1
puts "#{a} << #{b} => #{a << b}"
printf("%08b\n", a)
puts "--------"
printf("%08b\n", a<<b)
出力結果
11 << 1 => 22
00001011
--------
00010110
右シフト
a = 11
b = 1
puts "#{a} >> #{b} => #{a >> b}"
printf("%08b\n", a)
puts "--------"
printf("%08b\n", a>>b)
出力結果
11 >> 1 => 5
00001011
--------
00000101