ログアウト

整数を扱うInt型

整数を扱うInt型

符号付き(マイナス値が扱える)整数

 符号(+、-)付きの整数を扱いたいときはInt型を使います。

一般的に、数値を扱いたい時はこのInt型をもっとも多く使いますが、後ろに数字をつけて、値を格納するメモリのビット数(※)を次のように指定することができます。「Int8」「Int16」「Int32」「Int64」

(※)前節の06 コードとメモリの関係を参照

PlayGroundにて、実践で見てみましょう。
[数値を扱う型].max/minで、その型に入る最大値/最小値を得ることができますので、それぞれの型で扱える数値の範囲を確認します。

これはどういうことかというと、
例えばInt8では8ビット分のメモリ(=8個分のトランジスタ)を確保します。

最初の1ビット分は「+かーかの符号データを格納しておく場所」という取り決めがなされます。
残りの7ビット分は数字用のデータです。7桁の2進数の最大値は1111111=10進数で127となります。

つまり、Int8型の数値の表せる範囲は以下のようになるというわけです。
+: 0〜127
ー: -1〜-128 (マイナス値は0を含まないので、−1から数えて127個分、-128まで表せます)

他も同じ考え方で、Int16なら15桁分の2進数=32,767が最大値、最小値は-32,768となるわけです。
8ビットで1バイトという区切り方をしているので、8の倍数ごとにメモリの範囲が指定できます。

また、Int型の最大値/最小値は実行環境に左右されます。
コンピュータのスペックで、32ビット環境、64ビット環境、という分け方を聞いたことがあるかもしれません。これはメモリの扱える最大値で、Int型はその最大値を使ってデータを格納します。

iPhone 5s以降の端末では、64ビットのデータが扱えるチップが搭載されているため、このような大きなデータが扱えます。それぞれの型の最大値、最小値を確認するコードを入力してみましょう。
なお、Int64を指定しても、32ビット環境では32ビットまでの値しか扱えません。

 

符号なし(マイナス値が扱えない)整数

 符号なし整数には、「UInt」「UInt8」「UInt16」「UInt32」「UInt64」を使用します。

こちらに符号用のトランジスタは無く、指定した数のトランジスタ全てが数字用に使われます。
UInt8型であれば 0〜 8桁の2進数分(=255)まで表せることになります。

メモリ容量を気にせず開発するときは常にIntを使っていて大丈夫ですが、容量を気にして開発しなければいけない時は、状況にあった型を使用するようにしてください。

 

Int型への変換

Int(変換したいデータ)となります。

ここで、注意して欲しい点があります。

・浮動小数点型(小数点を扱う型)をInt型にしたいとき:数値が丸め込まれます。(例:1.5→1)

・文字列型をInt型にしたいとき:Int(変換したいデータ)!とします。

…この!はアンラップと呼ばれる処理で、SECTION2の03_nilとOptional型に出てきます。
 なぜこのような処理が必要かと言うと、文字列は必ずしも整数値にならないからです。(”abc”, "12ab"など)
 もし、整数値にならないデータが変換にかけられた場合、nil「何もない」という値が返ってきます。
 この「何もない」データを扱うため、自動的に Int(変換したいデータ) はOptional型という特殊な型になります。
 このデータを使うために必要な処理がアンラップというわけです。詳しくは該当の節にて解説いたします。