Help us understand the problem. What is going on with this article?

Golangの「<<」「>>」について

More than 1 year has passed since last update.

「A Tour of Go」というチュートリアルサイトを進めていくうちに、下記のように<<という知らない記述方法が出てきたので調べました。

basic-types.go
MaxInt uint64 = 1<<64 - 1

fmt.Printf("Value: %v", MaxInt)

※「A Tour of Go」のBasic types(11/17) から抜粋

<<>>の意味

<<>>「ビット演算子」と呼ばれるものです。
「ビット演算子」を使うことで、数値を2進数で表記したときに<<は左へ、>>は右へとずらすことができます。

1<<64 - 1の計算結果

1<<64は、2進数として1を左に64ずらすことになります。
そして、1を左に64ずらした値を2進数から10進数に変換して-1を計算した結果、MaxInt18446744073709551615という値で出力されることになります。

Value: 18446744073709551615

参考にさせてもらった記事

Go言語、「>>」の意味。 - teratail

KenAra
love Nippon.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away