C#.NETのサンプルコードを掲載しています。
      
数値(uint型)の中で指定した領域(bit単位)の値を抽出する。
ある数値の指定した部分だけを抽出するサンプルです。
範囲はbit単位で指定します。

こんなイメージです。
 

テストコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/// <summary>
/// 数値(uint型)の中で指定した領域(bit単位)の値を抽出します。
/// </summary>
/// <param name="value">対象とする数値</param>
/// <param name="startBit">開始位置(1~32)</param>
/// <param name="length">長さ</param>
/// <returns>bit単位で指定した範囲の値</returns>
public uint GetBitRangeUInt32(uint value, int startBit, int length)
{
    uint val = GetBitRangeOnePadding(startBit, length);
    val &= value;
    return val;
}

public void Test()
{
    uint r = 117;
    r = GetBitRangeUInt32(r, 3, 4);

    Console.WriteLine(Convert.ToString(r, 2).PadLeft(8, '0'));
    Console.WriteLine(r.ToString());
}

出力
00110100
52
GetBitRangeOnePaddingメソッドは こちら

      
変換処理




Effective C# 4.0
ビル・ワグナー
¥ 3,780



Copyright (C) 2011 - 2017 猫の気ままなC#日記