どうもオリジナルパチスロを自作している人です。
変態です。
今回は「ビット演算」について自分の備忘用に残しておきます。
ノートに書くと紛失する人なので記事にします。
3つint型を2進数で連結する方法
int型の “1” と “4” と “32” を繋げたいので調べました。
いずれの整数も8bitの範囲内としました。なので2進数で表記すると8桁です。
- 0000 0001 (10進数では”1″)
- 0000 0100 (10進数では”4″)
- 0010 0000 (10進数では”32″)
この3つを連結していき「0000 0001 0000 0100 0010 0000」にする方法です。
ビットシフトで実現します。
using System; // <------- 忘れずに
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BitShift : MonoBehaviour
{
int _left = 1;
int _center = 4;
int _right = 32;
void Start()
{
int totalBit;
totalBit = _left;
totalBit = totalBit << 8; // 8bit左にシフト
totalBit += _center;
totalBit = totalBit << 8; // 8bit左にシフト
totalBit += _right;
Debug.Log("int型で表示すると " + totalBit);
Debug.Log("2進数で表示すると " + Convert.ToString(totalBit, 2));
}
}
結果はこうなりました。成功です。
2進数を宣言する方法
C#において2進数を扱う型は “uint” となります。
2進数を宣言する場合は頭に”0b”をつける必要があります。
上記の2進数を宣言する場合は
uint bit = 0b000000010000010000100000;
int型とuint型は比較できるのか?
下のコードを用いて検証してみました。
// bit は uint型 0b000000010000010000100000
// totalBit は int型 1 と 4 と 32 をビットシフトで連結
if (bit == totalBit)
{
Debug.Log("等しい!");
}
else
{
Debug.Log("等しくないよ");
}
結果は比較「できます」。
ビット演算はフォロワーさんに教えてもらいました。
パチスロ開発に役立てます!
ビット演算でフラグ管理する方法はこちら
コメント