1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ちょっと発展的な演算子

Posted at

今日は少し発展した演算子の学び直し。

複合代入演算子

複合代入演算子とは、変数自信に対する演算と代入を組み合わせたもの。
aを足した値をそのままaに代入する、というあれです。
よく使います。

var a = 1
var b = 3
a += 1
b *= 2
print(a + b)
// 8

a += b : aにbを足した値をaに代入する
a -= b : aからbを引いたものをaに代入する
a *= b : aにbをかけたものをaに代入する
a /= b : aからbを割ったものをaに代入する
a %= b : aからbを割ったあまりをaに代入する
a && b : aとbの論理積の値をaに代入する
a ||= b : aとbの論理和の値をaに代入する

三項演算子

三項演算子は、条件によって式を変更できる便利なものです。こちらもよく現場で使います。

条件式 ? trueの場合の式 : falseの場合の式

if文を一行にした式、というイメージですかね。

let a = 300
let b = 200
let c = a>b ? "true" : "false"
print(c)
// "true"

レンジ演算子

レンジ演算子とは、数値の範囲を指定できる演算子です。

最後の値を含める場合
開始値 ..< 終了値

最後の値を含めない場合
開始値 ... 終了値

また、レンジ演算子で数値の範囲を作った時、その中に任意の数値が含められているかどうかを判断するときは contains() でチェックできます。

let age = 6...12
print(age.contains(4))
print(age.contains(11))

//false
//true

ビット演算子

ビット演算子を理解するのは少々難しいかもしれませんが、これは仕事でもビットフラグを読み込むのに使用しています。
結構大事なので、押さえておきましょう。

1. ビットシフト

ビットシフトは、数値を二進数で表現した時に、指定した方向に桁をシフトする演算です。

a<<b : aを左へb桁シフトする
a>>b : aを右へb桁シフトする

let v:UInt8 = 0b00000101
let v2 = v<<1
print(v,v2)

///5,10

2. ビット積、ビット和

こちらは、二進数のaとbの数値を書く桁のビットことに比較して演算するというものです。

a&b  :  両方の桁が1ならば1
a|b  :  どちらかの桁が1ならば1

こちらは今後もう少し深く掘っていこうかなと思います。

それでは。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?