2

次の形式の整数から4つの整数を取得する必要があります

    int1 14 bits
    int2 14 bits
    int3 3 bits
    int4 1 bit

int から個々のビットを読み取るための記事をたくさん見つけましたが、単一の整数から複数の値を読み取る方法については何も見つからないので、助けていただければ幸いです!

4

3 に答える 3

6

左から右だと仮定すると

int int1 = x >> 18;
int int2 = (x >> 4) & 0x3fff;
int int3 = (x >> 1) & 7;
int int4 = x & 1;
于 2013-06-06T11:04:17.057 に答える
5

したがって、32 ビットの int が次のようにビットごとに配置され、ターゲット変数が X、Y、Z、および W であると仮定しましょう。

31                                0 # bit index
XXXXXXXXXXXXXX YYYYYYYYYYYYYY ZZZ W # arrangement
......14...... ......14...... .3. 1 # bits per variable
............18 .............4 ..1 0 # required right-shift

を取得するにはX、整数を 18 ビット右にシフトし、((1<<14)-1)(つまり 0x3FFF) などでマスクします。

x = (i >> 18) & 0x3FFF
y = (i >> 4) & 0x3FFF
z = (i >> 1) & 7 # ((1<<3)-1) = 7
w = i & 1
于 2013-06-06T11:07:05.740 に答える
4

これを取得するには、bitwise and を使用できます。

int source = somevalue;

int int1 = 16383&somevalue;
int int2 = 268419072&somevalue;
int int3 = 1879048192&somevalue;
于 2013-06-06T11:04:19.913 に答える