今日のお勉強。180203-Rubyの基本

Rubyの基本。180203

Ruby入門

「数値と四則計算」まで学習しました。

 

ビット演算子とシフト演算子がいまいちピンとこなくて、2進数のことをずっと考えてました。 

 

●●進数にするといくつ。と、変換するの大変なので、

2進数、8進数、10進数、16進数相互変換ツール

という変換ツールを使いながら考えてました。

 

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入門

 

のサンプルプログラムをやってみた結果が、こうです。

 

f:id:nashiko_chan:20180204012955p:plain

 

5.4 x 3 = 16.200000000000003

5.4 + 3.2 = 8.600000000000001

などなど、あれれ〜?と思って調べてみたところ、

PHP - 言語別?計算誤差に関して(37652)|teratail

 

小数点以下の数字って、パソコンでは、厳密に細かい数字になってるとのことで、上記の結果が出たのかと思われます。

 

 

理由が見えてくると、なるほど〜!と思うことばかりですね

(^0^)/