合并十六进制值的位

时间:2015-10-30 06:50:00

标签: c bit-manipulation

我有两个uint32_t变量。 它们具有以下值 -

uint32_t a = 0x00002000;
uint32_t b = 0x00c00000;

我希望合并这两个变量,以便它们给出结果0000200c

如果我只是a+b,则不会返回正确的结果。有人可以帮忙吗?

编辑 - 我需要将b的第31-20位设置为a的第11-0位。

1 个答案:

答案 0 :(得分:3)

b可以隔离(b & 0xFFF00000)的第31-20位。

a可以隔离(a & 0x00000FFF)的第11-0位。

然后,在将b变量与a组合之前,需要将uint32_t answer = ((b & 0xFFF00000) >> 20) | (a & 0x00000FFF); 变量向右移动20位。总而言之,你得到了

    <div class="div1container">
        <div class="glyphicon glyphicon-plus divcontainer" data-toggle="collapse" data-target="#demo">Div1</div>

    <div id="demo" class="collapse">
    Div 1 Content
    </div>
    </div>
    <div class="div2container">
    <div class="glyphicon glyphicon-plus divcontainer" data-toggle="collapse" data-target="#demo2">Div2</div>

    <div id="demo2" class="collapse">
    Div 2 Content
    </div>
        </div>