富豪的プログラミングであれば、フラグごとにInt64とか割り当てるのもアリなんですが、過去との互換性とかでデータを詰め込みたいときにビット単位で使ったりします。
そういうとき向けの覚書です。
Sponsor Link
課題:Swiftでビット演算
Swiftでビット単位でデータをセット/ゲットしたい
具体的には、Swiftで以下の演算を行う方法です。
演算の種類
- データセット
- データゲット
- データのOn/Off確認
基本部分
C言語と同じです。
- ビットOR
- |
- ビットAND
- &
- ビットXOR
- ^
- ビットシフト
- <<, >>
ちょっと応用
checkValueという変数のNビット目を対象にすると、以下のようになります。
- チェック:特定ビットがセットされているか?
- (checkValue & (1 << N)) != 0
- セット:特定ビットをセット
- (checkValue | (1 << N))
Memo: |= も可能(ただし、varで定義されている必要あり) - リセット:特定ビットをリセット
- (checkValue & (MAXVALUE ^(1 << N)))
特定のビットだけ0にしたいので、特定ビットを0、それ以外を1となる値を作って、ANDを取ってます。
Sponsor Link