【问题标题】:How to extract the Most Significant bit of a binary number? [duplicate]如何提取二进制数的最高位? [复制]
【发布时间】:2021-07-11 06:42:51
【问题描述】:

如果我有一个名为 n 的 16 位数字和另一个名为 n2 的 16 位数字,我想将 n2 的前 8 位设置为 n。只有 n 的前 8 位应与 n2 相同,其余 8 位不应更改。在这种情况下我该怎么办?我尝试将数字移位 8,但我不知道如何提取 n 的 MSB 并将其设置为 n2 的 MSB,然后移位。

有人可以帮帮我吗?

谢谢!

【问题讨论】:

    标签: c bit-manipulation bitwise-operators bit bit-shift


    【解决方案1】:

    您可以将 n2 的前 8 位和 n 的前 8 位归零:

    n2 &= 0xFF00;
    n2 |= (n & 0x00FF);
    

    编辑 Eric Postpischil 注释,以下代码会将 n2 的最高有效字节更改为 n 的最高有效字节。

    n2 &= 0x00FF;
    n2 |= (n & 0xFF00);
    

    【讨论】:

    • OP 对“MSB”的引用表示他们想要设置的“前 8 位”是高位,而不是低位。
    • @EricPostpischil,你是对的,我将它添加到我的答案中。问题是“前 8 位”,在我的脑海中是 0..7 位而不是 8..15 位,这就是我混淆的地方:)
    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多