【问题标题】:Bit manipulation using shifts as well as and使用移位以及和
【发布时间】:2018-03-07 02:39:54
【问题描述】:

我被赋予了十六进制数 0xAA,并被告知按顺序对其执行以下操作:

右移 3 和 0x18 左移 2

以下是我执行此操作的步骤:

1.) 用二进制表示 0xAA

0xAA = 1010 1010

2.) 右移 3

0001 0101

3.) 用二进制表示 0x18

0x18 = 0001 1000

4.) 执行 0001 0101 和 0001 1000

0001 0101 & 0001 1000 = 0001 0000

5.) 左移 2

0100 0000

这是我的最终答案,0100 0000。但是,我被告知我应该得到的答案是 0111。我不知道我哪里出错了,或者我应该如何得到这个答案。我希望有人能告诉我哪里出错了。非常感谢大家。

【问题讨论】:

  • 我为我帖子中的格式道歉,我必须执行的操作是:1.) 右移 3 2.) 和 0x18 3.) 左移 2
  • 如果这是所有给定的信息:你的结果是正确的。
  • 对于给定的步骤,您的答案对我来说是正确的。但是,如果执行这些操作,我会得到0111b(0xAA >> 3 | 0x18) >> 2... 也许告诉你0111b 的人打算这样做?如果您在 8 位寄存器中对 0xAA 进行符号扩展或循环而不是移位,您甚至无法获得 0111b! (另外,在左移两次之后,你永远不会有任何以11b 结尾的东西,所以肯定有问题。
  • 这是所有给定的信息,谢谢 Joshua,感谢您的帮助
  • lungi,如果我理解正确,如果你在最后一步右移 2 而不是左移 2,你会得到 0111。我的理解会让我相信这些步骤会导致0100,你为什么要填写右边的?

标签: binary hex bit-manipulation bit-shift bitwise-and


【解决方案1】:

看来我计算的结果是正确的,不正确的是预期的结果。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2012-05-01
    • 2013-07-17
    相关资源
    最近更新 更多