ビット演算について(備忘用)C#, Unity

この記事は約3分で読めます。

どうもオリジナルパチスロを自作している人です。

変態です。

今回は「ビット演算」について自分の備忘用に残しておきます。

ノートに書くと紛失する人なので記事にします。

3つint型を2進数で連結する方法

int型の “1”“4” “32” を繋げたいので調べました。

いずれの整数も8bitの範囲内としました。なので2進数で表記すると8桁です。

  1. 0000 0001 (10進数では”1″)
  2. 0000 0100 (10進数では”4″)
  3. 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("等しくないよ");
        }

結果は比較「できます」。

ビット演算はフォロワーさんに教えてもらいました。

パチスロ開発に役立てます!

ビット演算でフラグ管理する方法はこちら

コメント

タイトルとURLをコピーしました