繁体   English   中英

C#从int获取位为int

[英]c# get bits from int as int

我需要从具有以下格式的整数中获取4个整数

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

我找到了很多文章,这些文章都是关于从int读取单个位的,但是从单个整数中读取多个值却找不到任何东西,因此我们将不胜感激!

假设它是从左到右

int int1 = x >> 18;
int int2 = (x >> 4) & 0x3fff;
int int3 = (x >> 1) & 7;
int int4 = x & 1;

您可以按位使用并获得以下信息:

int source = somevalue;

int int1 = 16383&somevalue;
int int2 = 268419072&somevalue;
int int3 = 1879048192&somevalue;

因此, 假设您的32位整数按如下方式按位排列,并且目标变量为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM