今日のお勉強。180203-Rubyの基本
Rubyの基本。180203
「数値と四則計算」まで学習しました。
ビット演算子とシフト演算子がいまいちピンとこなくて、2進数のことをずっと考えてました。
●●進数にするといくつ。と、変換するの大変なので、
という変換ツールを使いながら考えてました。
11 << 1 = 22
2進数に変換すると、
11 -----> 1011
1 -----> 1
-----------------
1011に1けた左に桁を動かすと、
10110。つまり22。
11 >> 1 = 5
11 -----> 1011
1 -----> 1
-----------------
1011に1けた右に動かす(一番右の1桁消す)
101。つまり5。
11 << 2 = 44
11 -----> 1011
2 -----> 10
-----------------
1011に2けた左に桁を動かすと、
101100。つまり44。
11 >> 2 = 2
11 -----> 1011
2 -----> 10
-----------------
1011に2けた右に動かす(一番右の2桁消す)
10。つまり2。
「整数と浮動小数点数の演算結果」
整数と浮動小数点数の演算結果 - 数値と四則演算 - Ruby入門
のサンプルプログラムをやってみた結果が、こうです。
5.4 x 3 = 16.200000000000003
5.4 + 3.2 = 8.600000000000001
などなど、あれれ〜?と思って調べてみたところ、
PHP - 言語別?計算誤差に関して(37652)|teratail
小数点以下の数字って、パソコンでは、厳密に細かい数字になってるとのことで、上記の結果が出たのかと思われます。
理由が見えてくると、なるほど〜!と思うことばかりですね
(^0^)/